home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / inter45b / interrup.h < prev    next >
Text File  |  1995-03-26  |  359KB  |  10,078 lines

  1. Interrupt List, part 8 of 12
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------N-2F7A00-----------------------------
  4. INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
  5.     AX = 7A00h
  6. Return: AL = status
  7.         00h not installed
  8.         FFh installed
  9.         ES:DI -> FAR entry point for routines accessed exclusively
  10.               through INT 7A in NetWare versions through 2.0a.
  11.               Call with same values as INT 7A
  12.         ES:BX -> two bytes containing IPX major/minor version
  13.             (IPXODI v2.12; BX unchanged by older IPX drivers)
  14. SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"Novell"
  15. --------N-2F7A10-----------------------------
  16. INT 2F U - Novell NetWare - TBMI v1.1+ - GET TBMI STATUS
  17.     AX = 7A10h
  18. Return: DH = major TBMI version number
  19.     DL = minor TBMI version number (01h for v1.1)
  20.     CX = segment address of TBMI resident part
  21.     BX = status word of TBMI (see #1569)
  22. Note:    TBMI is the Task-Switched Buffer Manager Interface
  23. SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
  24.  
  25. Bitfields for NetWare TBMI status word:
  26. Bit(s)    Description    (Table 1569)
  27.  0    INT2F intercepted by TBMI
  28.  1    INT7A intercepted by TBMI
  29.  2    INT64 intercepted by TBMI
  30.  3-14    reserved or unused ???
  31.  15    outstanding task ID was detected
  32. --------N-2F7A11-----------------------------
  33. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT2F HANDLERS
  34.     AX = 7A11h
  35. Return: ES:BX -> old INT 2F handler
  36.     DS:DX -> TBMI INT 2F handler
  37. SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h,AX=7A1Ah
  38. --------N-2F7A12-----------------------------
  39. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT64 HANDLERS
  40.     AX = 7A12h
  41. Return: ES:BX -> old INT 64 handler
  42.     DS:DX -> TBMI INT 64 handler
  43. SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
  44. --------N-2F7A13-----------------------------
  45. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT7A HANDLERS
  46.     AX = 7A13h
  47. Return: ES:BX -> old INT 7A handler
  48.     DS:DX -> TBMI INT 7A handler
  49. SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
  50. --------N-2F7A14-----------------------------
  51. INT 2F U - Novell NetWare - TBMI v1.1+ - GET STATISTICS
  52.     AX = 7A14h
  53.     CX = statistic to retrieve
  54.         0000h available diagnostic functions???
  55.         Return: CX = maximum available function??? (000Ch for v2.0)
  56.         0001h buffers in use
  57.         Return: CX = TBMI buffers currently in use
  58.         0002h maximum buffers used
  59.         Return: CX = maximum number of buffers ever in use
  60.         0003h unavailable buffers
  61.         Return: CX = count of unavailable TBMI buffers
  62.         0004h old interrupt usage
  63.         Return: CX = TBMI accesses to intercepted old vectors INT 2F,
  64.                   INT 64, and INT 7A
  65.         0005h far call usage
  66.         Return: CX = TBMI accesses to IPX/SPX far call handler (not
  67.                   including internal accesses)
  68.         0006h task buffering
  69.         Return: CX = TBMI task buffering status (enabled/disabled or
  70.                   disable/enable switch count???)
  71.         0007h current task ID
  72.         Return: CX = TBMI current task ID number (0000h if ???)
  73.         0008h outstanding ID count
  74.         Return: CX = number of outstanding TBMI IDs
  75.         0009h configured ECBs
  76.         Return: CX = number of TBMI Event Control Blocks configured
  77.         000Ah configured data ECBs
  78.         Return: CX = number of TBMI data ECBs configured
  79.         000Bh configured sockets
  80.         Return: CX = number of TBMI sockets configured (from NETCFG)
  81.         000Ch current sockets
  82.         Return: CX = number of TBMI sockets currently in use
  83. Return: BX = maximum supported subfunction (000Ch)
  84. SeeAlso: AX=7A10h
  85. --------N-2F7A15-----------------------------
  86. INT 2F OU - Novell NetWare - TBMI v1.1 only - RESET ???
  87.     AX = 7A15h
  88. Return: BX = new value of ???
  89. Desc:    set ??? to its default value
  90. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  91. SeeAlso: AX=7A17h
  92. --------N-2F7A16-----------------------------
  93. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  94.     AX = 7A16h
  95.     CX = ???
  96.     ???
  97. Return: ???
  98. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  99. --------N-2F7A17-----------------------------
  100. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  101.     AX = 7A17h
  102.     ???
  103. Return: BX = old value of ???
  104.     CX = new value of ???
  105. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  106. SeeAlso: AX=7A15h
  107. --------N-2F7A18-----------------------------
  108. INT 2F U - Novell NetWare - TASKID v1.0 - INSTALLATION CHECK
  109.     AX = 7A18h
  110. Return: AL = FFh if installed
  111.         BX = configuration flags (see #1570)
  112.         CX = resident code segment
  113. SeeAlso: AX=7A10h
  114.  
  115. Bitfields for NetWare TASKID configuration flags:
  116. Bit(s)    Description    (Table 1570)
  117.  0    INT 2F hooked
  118.  3    INT 08 hooked
  119.  other    unused
  120. --------N-2F7A19-----------------------------
  121. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 08 HANDLERS
  122.     AX = 7A19h
  123. Return: AL = FFh
  124.     DS:DX -> TASKID INT 08 handler
  125.     ES:BX -> original INT 08 handler
  126. --------N-2F7A1A-----------------------------
  127. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 2F HANDLERS
  128.     AX = 7A1Ah
  129. Return: AL = FFh
  130.     DX:DX -> TASKID INT 2F handler
  131.     ES:BX -> original INT 2F handler
  132. SeeAlso: AX=7A11h,AX=7A19h
  133. --------N-2F7A1B-----------------------------
  134. INT 2F U - Novell NetWare - TASKID v1.0 - GET DIAGNOSTICS INFORMATION
  135.     AX = 7A1Bh
  136.     CX = desired information
  137.         0000h supported functions
  138.         0001h TASKID ID number
  139.         Return: CX = ID number
  140.         0002h set-ID count
  141.         Return: CX = ID set count
  142. Return: AL = FFh
  143.     BX = highest supported subfunction number (0002h)
  144. SeeAlso: AX=7A14h,AX=7A18h
  145. --------N-2F7A1C-----------------------------
  146. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  147.     AX = 7A1Ch
  148.     BP = ???
  149.     CX:DX = ???
  150. Return: AX = 70FFh
  151. --------N-2F7A1D-----------------------------
  152. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  153.     AX = 7A1Dh
  154.     ???
  155. Return: ES = ???
  156.     ???
  157.     SI destroyed
  158. --------N-2F7A1E-----------------------------
  159. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  160.     AX = 7A1Eh
  161.     ES:SI -> ???
  162.     ???
  163. Return: ???
  164. --------N-2F7A20BX0000-----------------------
  165. INT 2F - Novell NetWare - Adv NetWare 4.0 DOS Requester - GET VLM CALL ADDRESS
  166.     AX = 7A20h
  167.     BX = 0000h
  168. Return: AX = 0000h on success (installed)
  169.         ES:BX -> far call address for DOS Requester (see #1571)
  170. Notes:    the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
  171.       NetWare LAN's as of the release of Advanced NetWare 4.0 (1993).  It
  172.       is backward compatible with NetWare 2.1x through 3.11 servers as
  173.       well.     Note that there was a NetWare 4.0 in the early 1980's, which
  174.       can cause confusion.
  175.     this call is used as the installation check by VLM.EXE, which is the
  176.       loader for all the modules of the DOS Requester
  177.     .VLMs are standard old .EXE format executables whose normal entry point
  178.       merely terminates to prevent loading from the command line.  The
  179.       real entry point is found by looking at the VLM header at the
  180.       beginning of the load image (see #1574)
  181. Index:    installation check;NetWare 4.0 DOS Requester
  182.  
  183. (Table 1571)
  184. Call DOS Requester entry point with:
  185.     STACK:    WORD    destination function
  186.         WORD    destination VLM ID (see #1573)
  187.         WORD    source VLM ID (0000h = application program)
  188.     registers as appropriate for function
  189. Return: AX = status code (0000h,8811h,8846h,8848h,8853h) (see #1572)
  190.     other registers as appropriate for function
  191.     STACK popped
  192.  
  193. (Table 1572)
  194. Values for VLM status code:
  195.  0000h    successful
  196.  88xxh    error generated by requester
  197.  8801h    invalid or non-attached connection handle
  198.  8803h    cannot add CDS
  199.  8804h    bad path
  200.  8811h    nonexistent function called
  201.  8836h    attempted function with invalid parameter
  202.  8846h    ???
  203.  8848h    non-loaded or nonexistent VLM called
  204.  884Dh    no more SFT entries (too many handles)
  205.  8850h    too many reply fragments
  206.  8853h    ???
  207.  89xxh    error generated by server, low byte = return code from server
  208.  
  209. (Table 1573)
  210. Values for VLM identifier:
  211.  0001h    VLM.EXE        Virtual Loadable Modules manager (see also #1575)
  212.  0010h    CONN.VLM    connection table manager (see also #1576)
  213.  0020h    TRAN.VLM    transport protocol multiplexor (see also #1578)
  214.  0021h    IPXNCP.VLM    transport protocol implementation using IPX (see #1580)
  215.  0022h    reserved for TCPNCP.VLM
  216.  0030h    NWP.VLM        NetWare protocol multiplexor (see also #1581)
  217.  0031h    BIND.VLM
  218.  0032h    NDS.VLM        NetWare Directory Services (see also #1582)
  219.  0033h    PNW.VLM        Personal NetWare
  220.  0034h    RSA.VLM        RSA encryption for directory services re-authentication
  221.  0040h    REDIR.VLM    DOS redirector (see also #1583)
  222.  0041h    FIO.VLM        file I/O (see also #1585)
  223.  0042h    PRINT.VLM    printer redirector (see also #1586)
  224.  0043h    GENERAL.VLM    misc functions for NETx and REDIR (see also #1587)
  225.  0050h    NETX.VLM    NetWare shell compatibility (see also #1588)
  226.  0060h    AUTO.VLM    auto-reconnect/auto-retry
  227.  0061h    SECURITY.VLM    enhanced security module
  228.  0100h    NMR.VLM        NetWare management responder
  229.  
  230. Format of VLM header:
  231. Offset    Size    Description    (Table 1574)
  232.  00h    DWORD    -> initialization entry point
  233.  04h    DWORD    -> VLM API entry point
  234.  08h    DWORD    -> ??? entry point
  235.  0Ch    DWORD    -> ??? entry point
  236.  10h    DWORD    -> ??? entry point
  237.     ...
  238.  var    DWORD    00000000h (end of entry point list)
  239.       4 BYTEs    signature "NVlm"
  240.     WORD    VLM identifier
  241. Note:    the number of entry points in the header is reported as "Func" in the
  242.       VLM /D display.
  243.  
  244. (Table 1575)
  245. Call VLM Manager (VLM.EXE, ID 0001h) with:
  246. Func    Description/Registers
  247.  01h    VLM Statistics
  248.  
  249. (Table 1576)
  250. Call Connection Manager (CONN.VLM, ID 0010h) with:
  251. Func    Description/Registers
  252.  01h    Conn Get Version
  253.  03h    Conn Statistics
  254.  04h    Conn Alloc Handle
  255.  05h    Conn Validate Handle
  256.     CX = connection handle
  257.     Return: AX = 0000h if valid handle
  258.  06h    Conn Free Handle
  259.  07h    Conn Get Entry Field
  260.     BH = connection parameter (see #1577)
  261.     CX = connection handle
  262.     DX = value if BH is non-array parameter
  263.     DH = offset in array if BH is array parameter
  264.     DL = number of bytes to copy if BH is array
  265.     ES:DI -> return buffer if BH is array
  266.     Return: AX = 0000h if successful
  267.         DX = value if non-array parameter
  268.         DH = maximum number of bytes in buffer if array parameter
  269.         DL = number of bytes copied if array
  270.         BX destroyed
  271.  08h    Conn Set Entry Field
  272.     BH = connection parameter (see #1577)
  273.     CX = connection handle
  274.     DX = value if BH is non-array parameter
  275.     DH = offset in array if BH is array parameter
  276.     DL = number of bytes to copy if BH is array
  277.     DS:SI -> buffer if BH is array
  278.     Return: AX = 0000h if successful
  279.         DH = maximum number of bytes in buffer
  280.         DL = number of bytes copied
  281.         BX destroyed
  282.  09h    Conn Reset Entry Field
  283.     BH = connection parameter (see #1577)
  284.     CX = connection handle
  285.     Return: AX = 0000h if successful
  286.         BX,DX destroyed
  287.  0Ah    Conn Lookup Handle
  288.  0Dh    Conn Name Lookup
  289.     BL = lookup type (00h equal, 40h not equal)
  290.     BH = connection parameter (see #1577)
  291.     CX = connection handle, 0000h if first
  292.     DX = value if BH is non-array parameter
  293.     DH = offset in array if BH is array parameter
  294.     DL = number of bytes to copy if BH is array
  295.     DS:SI -> buffer if BH is array
  296.     Return: AX = 0000h if successful
  297.         CX = handle matching given parameters
  298.  0Eh    Conn Name To Handle
  299.     DS:SI -> uppercased server name
  300.     CX = length of server name, 0000h if ASCIZ name
  301.     Return: AX = error code or 0000h if successful
  302.             CX = connection handle if successful
  303.  0Fh    Conn Get Num Connections
  304.     Return: DX = number of connections
  305.         CX destroyed
  306.  
  307. (Table 1577)
  308. Values for NetWare Connection Manager CEI (Connection Entry Information):
  309.  number    flags    description
  310.  00h    FR    error
  311.  1    WL    VLM id of transport protocol (NDS/BIND/PNW)
  312.  2    FR    ???
  313.  3    F    authenticated
  314.  4    F    packet burst supported
  315.  5    FR    SFT3 change
  316.  6    FR    ???
  317.  7    FR    packet burst reset needed
  318.  8    W    server version
  319.  9    W    ???
  320.  0Ah    W    distance to server
  321.  0Bh    W    ???
  322.  0Ch    B    NCP sequence number
  323.  0Dh    W    connection number
  324.  0Eh    B    ???
  325.  0Fh    WL    VLM id for transport protocol (IPXNCP)
  326.  10h    W    ???
  327.  11h    A    transport specific buffer
  328.         12 byte server address
  329.         6 byte    router address
  330.         2 byte round trip time
  331.  12h    FR    broadcast message waiting
  332.  13h    W    large internet packets supported
  333.  14h    B    security options
  334.         01h CRC enabled
  335.         02h packet signing enabled
  336.         20h packet signing active
  337.  15h    W    ???
  338.  16h    FR    ???
  339. Note:    flag meanings
  340.         F=flag value
  341.         B=byte value
  342.         W=word value
  343.         A=array
  344.         R=resettable
  345.         L=settable only before authentication
  346.         others=read only
  347. SeeAlso: #1576
  348.  
  349. (Table 1578)
  350. Call TRAN.VLM (VLM ID 0020h) with:
  351. Func    Description/Registers
  352.  01h    Tran Get Version
  353.  03h    Tran Statistics
  354.  06h    Tran Request Reply (see INT 21/AH=F2h)
  355.     AL = request code (see #1266 at INT 21/AH=F2h)
  356.     BH = error handler flag
  357.         00h default error handler
  358.         01h return network errors to caller
  359.         02h handle network errors in requester
  360.     BL = request list length (max 5 fragments) (see #1579)
  361.     CX = connection handle
  362.     DH = 00h (reserved)
  363.     DL = reply list length (max 5 fragments) (see #1579)
  364.     DS:SI -> address list
  365.     ES:DI -> address list
  366.     Return: AX = error code, 0000h if successful
  367.         BX,DX destroyed
  368.         reply buffer updated if successful
  369.  08h    Tran Schedule/Cancel Event
  370.  09h    Tran Get Max Size
  371.  0Ah    Tran Broadcast Mux
  372.  
  373. Format of TRAN.VLM request/reply fragment descriptor (array):
  374. Offset    Size    Description    (Table 1579)
  375.  00h    DWORD    address of buffer
  376.  04h    WORD    length of buffer
  377.  
  378. (Table 1580)
  379. Call IPXNCP.VLM (VLM ID 0021h) with:
  380. Func    Description/Registers
  381.  01h    IPX Get Version
  382.  03h    IPX Statistics
  383.  06h    IPXNCP Request Reply???
  384.     functionally equivalent to Tran Request Reply???
  385.  
  386. (Table 1581)
  387. Call NWP.VLM (VLM ID 0030h) with:
  388. Func    Description/Registers
  389.  01h    NWP Get Version
  390.  03h    NWP Statistics
  391.  04h    NWP Connect
  392.  05h    NWP Disconnect
  393.  06h    NWP Attach
  394.  08h    NWP Login
  395.  09h    NWP Logout
  396.  0Ah    NWP Get Bindery Object/Get Message Handler
  397.  0Eh    NWP Ordered Send To All
  398.  0Fh    NWP Preferred Handler
  399.  10h    NWP ???
  400.     AL = subfunction
  401.         01h get security flags (see also INT 21/AX=B301h)
  402.         Return: BX:CX indicates signature level
  403.                 = 0100h:0000h if signature level=0
  404.                 = 0300h:0000h if signature level=1
  405.                 = 0302h:0000h if signature level=2
  406.                 = 0302h:0202h if signature level=3
  407.         02h create session keys (see also INT 21/AX=B302h)
  408.         CX = server connection handle
  409.         DS:SI -> 24-byte input buffer
  410.         04h set security flags (see also INT 21/AX=B304h)
  411.         BL:CL = new flags
  412.         06h renegotiate security level (see also INT 21/AX=B306h)
  413.         CX = server connection number (01h-08h)
  414.  
  415. (Table 1582)
  416. Call NDS.VLM (VLM ID 0032h) with:
  417. Func    Description/Registers
  418.  01h    NDS Get Version
  419.  03h    NDS Statistics
  420.  08h    NDS Fragment Request
  421.  0Ch    NDS ???
  422.     BX = subfunction
  423.         0000h get default name context
  424.         ES:DI -> output buffer
  425.         0002h read from TDS
  426.         CX = reply buffer length
  427.         DX = 0110h ???
  428.         SI = offset in TDS
  429.         ES:DI -> reply buffer
  430.         0003h write to TDS
  431.         0005h "NWDSChangeResourceConnection/Lock Connection"
  432.         CX = connection handle
  433.         DL = subfunction (00h-09h)
  434.             04h = NWDSChangeResourceOnConnection
  435.             07h = NWDSChangeResourceOnConnection
  436.             08h = NWDSLockConnection
  437.         0007h "NWDSSetMonitoredConnection"
  438.         000Ah set NDS CEI Info
  439.         DL = buffer length
  440.         DS:SI -> input buffer
  441.  
  442. (Table 1583)
  443. Call REDIR.VLM (VLM ID 0040h) with:
  444. Func    Description/Registers
  445.  01h    Redir Get Version
  446.  03h    Redir Statistics
  447.  04h    Redir Build SFT (see INT 21/AH=B4h"NetWare")
  448.     CX = connection handle
  449.     ES:DI -> SFT build request (see #1584)
  450.     Return: AX = 0000h if successful
  451.             BX = DOS file handle
  452.  05h    Redir DOS To NW Handle
  453.  08h    Redir Specific
  454.     BX = 0000h get item
  455.         DS:SI -> ASCIZ string "LPTx" (x='1'-'9') or drive spec ("d:")
  456.         ES:DI -> reply buffer for "\\server\resource",00h,"path",00h
  457.  
  458. Format of NetWare SFT build request:
  459. Offset    Size    Description    (Table 1584)
  460.  00h  6 BYTEs    NetWare handle
  461.  06h 18 BYTEs    ???
  462.  18h    LONG    file size
  463.  1Ch  8 BYTEs    ???
  464.  
  465. (Table 1585)
  466. Call File I/O FIO.VLM (VLM ID 0041h) with:
  467. Func    Description/Registers
  468.  01h    FIO Get Version
  469.  03h    FIO Statistics
  470.  04h    FIO Remote Copy
  471.  
  472. (Table 1586)
  473. Call PRINT.VLM (VLM ID 0042h) with:
  474. Func    Description/Registers
  475.  01h    Print Get Version
  476.  03h    Print Statistics
  477.  04h    Print Get/Set Data
  478.  05h    Print Open Capture File
  479.  07h    Print Get Num Of Printers
  480.  08h    Print Redirection
  481.     CX = connection handle
  482.     DX = printer (0=LPT1)
  483.     BX = destination
  484.         0000h redirect device to queue
  485.         AX = length of queue name, 0000h to use queue ID
  486.         DS:SI -> uppercased ASCIZ queue name
  487.         ES:DI -> queue ID, 0000h:0000h to use queue name
  488.         0003h redirect device to file
  489.         AX = 0000h or 4E57h ('NW')
  490.         ES:DI -> ASCIZ path of file
  491.     Return: AX = 0000h if successful
  492.  09h    Print Flush And Close Job
  493.  0Ch    Print Get/Set Banner Name
  494.  
  495. (Table 1587)
  496. Call GENERAL.VLM (VLM ID 0043h) with:
  497. Func    Description/Registers
  498.  01h    Gen Get Version
  499.  03h    Gen Statistics
  500.  04h    Gen Get/Set Primary
  501.  09h    Gen Return Drive Info
  502.  
  503. (Table 1588)
  504. Call NETX.VLM (VLM ID 0050h) with:
  505. Func    Description/Registers
  506.  01h    NetX Get Version
  507.  03h    NetX Statistics
  508.  
  509. (Table 1589)
  510. Call SECURITY.VLM (VLM ID 0061h) with:
  511. Func    Description/Registers
  512.  04h    ???
  513.     AL = subfunction
  514.         01h compute session key
  515.         DS:SI -> 24-byte input buffer
  516.         ES:DI -> 8-byte output buffer
  517. --------N-2F7A20BX0001-----------------------
  518. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM CallA ADDRESS
  519.     AX = 7A20h
  520.     BX = 0001h
  521. Return: AX = 0000h if request was handled
  522.         ES:BX -> CallA entry point (see #1590)
  523.  
  524. (Table 1590)
  525. Call VLM CallA entry point with:
  526.     AX = function
  527.         0000h submit
  528.         0001h cancel (not implemented)
  529.     ES:DI -> Overlay Asynchronous Control Block structure (see #1591)
  530.  
  531. Format of Overlay Asynchronous Control Block (OACB):
  532. Offset    Size    Description    (Table 1591)
  533.  00h    DWORD    link to next OACB, 0000h:0000h if last
  534.  04h    DWORD    callback address or 0000h:0000h
  535.  08h    BYTE    InUse flag (00h if complete)
  536.  09h    BYTE    flag, reserved for VLM use
  537.  0Ah    WORD    destination VLM
  538.  0Ch    WORD    destination function
  539.  0Eh    WORD    temporary storage for VLM.EXE
  540.  10h  6 BYTEs    reserved
  541.  16h  6 DWORDs    EAX,EBX,ECX,EDX,ESI,EDI
  542.  2Eh  4 WORDs    DS,ES,FS,GS (FS and GS not used)
  543. --------N-2F7A20BX0002-----------------------
  544. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTIPLEX ADDRESS
  545.     AX = 7A20h
  546.     BX = 0002h
  547. Return: AX = 0000h
  548.     ES:BX -> VLM multiplex entry point (see #1592)
  549. Note:    for v1.10, this function is only available while VLM.EXE is loading
  550.       the .VLM modules, because ES is destroyed on return
  551.  
  552. (Table 1592)
  553. Call DOS Requester entry point with:
  554.     BX = function???
  555.         0000h
  556.         DX = ???
  557.         DI = ???
  558.         BP = ???
  559.         0002h
  560.         CX = ???
  561.         0003h
  562.         DX = ???
  563.         BP = ???
  564.         0006h
  565.         AH = subfunction???
  566.         AL = ???
  567.         STACK: variable (0, 4, 10, 14 bytes seen)
  568. --------N-2F7A20BX0003-----------------------
  569. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM PARSE API ADDRESS
  570.     AX = 7A20h
  571.     BX = 0003h
  572. Return: AX = 0000h if request was handled
  573.         ES:BX -> VLM parse API entry point
  574. --------N-2F7A20BX0004-----------------------
  575. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTICAST CALLOUT
  576.     AX = 7A20h
  577.     BX = 0004h
  578. Return: AX = 0000h if request was handled
  579.         ES:BX -> VLM multicast data (see #1593)
  580.  
  581. Format of DOS Requester data:
  582. Offset    Size    Description    (Table 1593)
  583.  00h    DWORD    pointer to ??? (code)
  584.  04h  4 BYTEs    ???
  585.  08h    DWORD    pointer to ??? (code) (see #1594)
  586.     ???
  587.  
  588. (Table 1594)
  589. Call offset 08h function with:
  590.     AL = function (00h-07h)
  591.     ???
  592. Return: ???
  593. --------N-2F7A20BX0005-----------------------
  594. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM INT 24 ADDRESS
  595.     AX = 7A20h
  596.     BX = 0005h
  597. Return: AX = 0000h if request was handled
  598.         ES:BX -> VLM INT 24 handler
  599. --------N-2F7A20BX0006-----------------------
  600. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  601.     AX = 7A20h
  602.     BX = 0006h
  603. Return: AX = 0000h if request was handled
  604.         ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  605. --------N-2F7A20BX0007-----------------------
  606. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  607.     AX = 7A20h
  608.     BX = 0007h
  609. Return: AX = 0000h
  610.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  611. --------N-2F7A20BX0008-----------------------
  612. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  613.     AX = 7A20h
  614.     BX = 0008h
  615. Return: AX = 0000h
  616.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  617. --------N-2F7A20BX0080-----------------------
  618. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  619.     AX = 7A20h
  620.     BX = 0080h
  621. Return: AX = 0000h
  622.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  623. Note:    this function is identical to AX=7A20h/BX=0006h in v1.03 and v1.10
  624. --------N-2F7A20BX0081-----------------------
  625. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  626.     AX = 7A20h
  627.     BX = 0081h
  628. Return: AX = 0000h
  629.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  630. Note:    this function is identical to AX=7A20h/BX=0007h in v1.03 and v1.10
  631. --------N-2F7A20BX0082-----------------------
  632. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  633.     AX = 7A20h
  634.     BX = 0082h
  635. Return: AX = 0000h
  636.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  637. Note:    this function is identical to AX=7A20h/BX=0008h in v1.03 and v1.10
  638. --------N-2F7A21-----------------------------
  639. INT 2F C - Novell NetWare - DOS Requester - BROADCAST CALLBACK
  640.     AX = 7A21h
  641.     CX = server connection
  642. Return: CX = 0000h if broadcast handled
  643. SeeAlso: AX=7A22h,AX=7A85h
  644. --------N-2F7A22-----------------------------
  645. INT 2F C - Novell NetWare - DOS Requester - BROADCAST/SFT3 INFORM
  646.     AX = 7A22h
  647.     DL = function
  648.         21h ('!') broadcast
  649.         40h ('@') SFT3 inform
  650. Return: AX = 0000h if event handled
  651. SeeAlso: AX=7A21h
  652. --------N-2F7A2F-----------------------------
  653. INT 2F U - Novell NetWare - IPXODI v2.12 - GET ???
  654.     AX = 7A2Fh
  655. Return: AX = 0000h if supported and active
  656.         BX = version??? (0001h)
  657.         ES:DI -> entry point (see #1595)
  658. Note:    IPXODI v2.12 is distributed as part of the Personal NetWare system
  659.       bundled with Novell DOS 7
  660. SeeAlso: INT 7A/BX=001Fh
  661.  
  662. (Table 1595)
  663. Call IPXODI entry point with:
  664.     BX = function
  665.         0000h ???
  666.         ES:SI -> ??? data
  667.         0001h ???
  668.         AX = ???
  669.         Return: ES:SI -> ??? data
  670.         0002h get ??? address
  671.         Return: ES:SI -> ??? buffer
  672.         0003h send SPX packet???
  673.         AL = ???
  674.         CX = ???
  675.         DX = ???
  676.         SI = ???
  677.         Return: ??? (registers from a call to INT 7A/BX=0016h)
  678. Return: BX corrupted
  679. --------N-2F7A2FBX0EDC-----------------------
  680. INT 2F U - Personal NetWare - HRMIB - UNINSTALL
  681.     AX = 7A2Fh
  682.     BX = 0EDCh
  683. Return: ???
  684. SeeAlso: AX=7AA0h
  685. --------N-2F7A40-----------------------------
  686. INT 2F U - Novell NetWare - TCP/IP Protocol Stack - INSTALLATION CHECK
  687.     AX = 7A40h
  688. Return: AX = 7AFFh if installed
  689.         BX = ??? bit flags (see #1596)
  690.         CX = version (CH=major, CL=minor)
  691.         DX = 0000h
  692.         ES:DI -> entry point for TCP/IP stack (see #1597)
  693. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  694.     this function is also supported by the Beame&Whiteside BWLWP40 shim,
  695.       but it only returns AL and ES:DI, and does not support AX=7A41h
  696. SeeAlso: AX=7A41h,INT 15/AX=DE2Eh,INT 60"Excelan"
  697.  
  698. Bitfields for returned BX:
  699. Bit(s)    Description    (Table 1596)
  700.  0    ???
  701.  1    ???
  702.  15-2    reserved???
  703.  
  704. (Table 1597)
  705. Call NetWare TCP/IP entry point with:
  706.     ES:SI -> parameter block (see #1598)
  707. Return: ES:SI parameter block updated
  708.  
  709. Format of NetWare TCP/IP parameter block:
  710. Offset    Size    Description    (Table 1598)
  711.  00h  4 BYTEs    ???
  712.  04h    WORD    (ret) ???
  713.  06h    WORD    (ret) ???
  714.  08h    DWORD    -> FAR routine called if bit 7 of function code set
  715.  0Ch    BYTE    flags???
  716.  0Dh  7 BYTEs    ???
  717.  14h    BYTE    (ret) ???
  718.  15h    BYTE    (call) function code (bit 7 set if ???) (see #1599)
  719.  16h    BYTE    socket number
  720.  17h    BYTE    (ret) result or error code
  721.  18h  4 WORDs    parameter words 0 to 3 (see #1599 for usage)
  722.  20h    WORD    length of packet sent/received
  723.  22h    WORD    number of pointer/length pairs following
  724.  24h 6N BYTEs    buffer descriptors, each
  725.         Offset    Size    Description
  726.          00h    DWORD    pointer to buffer
  727.          04h    WORD    length of buffer
  728.  
  729. (Table 1599)
  730. Values for NetWare TCP/IP function code:
  731.  01h    "accept"
  732.  02h    "bind"
  733.  03h    close socket
  734.     Call:    socket number field set
  735.  04h    "connect"
  736.  05h    get IP address
  737.     Call:    socket number field set to 0000h
  738.     Return:    parameter words 1 and 2 contain caller's IP address
  739.  06h    get hardware address
  740.  07h    "getpeername"
  741.  08h    get socket name
  742.  0Ah    get netmask
  743.  0Bh    "ioctl"
  744.  0Ch    "listen"
  745.  0Dh    "select"
  746.  10h    "shutdown"
  747.  11h    open socket
  748.     Call:    socket number field set to 0000h
  749.         parameter word 0 = desired protocol (6 = TCP, 17 = UDP)
  750.     Return: socket number set
  751.  12h    "read"
  752.  13h    "recvfrom"
  753.     Call:    socket number set
  754.         packet length and buffer descriptors set
  755.     Return:    packet length and receive buffers updated
  756.         parameter word 1 = source port number
  757.         parameter words 2 and 3 = source IP address
  758.  14h    "write"
  759.  15h    "sendto"
  760.     Call:    socket number set
  761.         flags field = ???
  762.         parameter word 0 = 0000h
  763.         parameter word 1 = destination port number
  764.         parameter words 2 and 3 = destination IP address
  765.         packet length and buffer descriptors set
  766.  16h    get BOOTP data
  767. Note:    these functions are based on the Unix socket interface
  768. --------N-2F7A41-----------------------------
  769. INT 2F - Novell NetWare - TCP/IP Protocol Stack - WINDOWS SUPPORT???
  770.     AX = 7A41h
  771.     ES:DI -> FAR entry point for ??? (will be called with BX=1,2,3,4)
  772. Return: AX = 7AFFh if supported
  773.         BX = ??? (see #1596)
  774.         CX = version (CH=major, CL=minor)
  775.         DX = 0000h
  776.         ES:SI -> DWORD containing passed value of ES:DI
  777.         ES:DI -> entry point for TCP/IP stack
  778. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  779.     the pointer which is set to ES:DI is cleared to 0000h:0000h when
  780.       a Windows exit broadcast is received
  781. SeeAlso: AX=7A40h
  782. --------N-2F7A42-----------------------------
  783. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ??? ENTRY POINT
  784.     AX = 7A42h
  785. Return: AX = 7AFFh if supported
  786.         ES:DI -> ??? entry point (see #1600)
  787.  
  788. (Table 1600)
  789. Call NetWare TCPIP.EXE entry point with:
  790.     DX = ???
  791.     ES:DI -> ??? (see #1601)
  792. Return: AX = 0000h
  793.     other registers destroyed
  794.  
  795. Format of data buffer:
  796. Offset    Size    Description    (Table 1601)
  797.  00h    WORD    offset of WORD ??? or 0000h
  798.  02h    WORD    offset of DWORD ??? or 0000h
  799.  04h    WORD    offset of DWORD ??? or 0000h
  800. --------N-2F7A43-----------------------------
  801. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  802.     AX = 7A43h
  803. Return: AX = 7AFFh if supported
  804.         DX = offset of ???
  805. SeeAlso: AX=7A44h
  806. --------N-2F7A44-----------------------------
  807. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - SET ???
  808.     AX = 7A44h
  809.     DX = offset of ??? (see AX=7A43h)
  810. Return: AX = 7AFFh if supported
  811. SeeAlso: AX=7A43h
  812. --------N-2F7A4C-----------------------------
  813. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  814.     AX = 7A4Ch
  815. Return: AX = 7AFFh if supported
  816.         BX = ??? (0037h)
  817.         CX = ??? (001Ch)
  818. --------N-2F7A4DBX0001-----------------------
  819. INT 2F - Novell NetWare - ???
  820.     AX = 7A4Dh
  821.     BX = 0001h
  822.     ES:DI -> ???
  823. Return: AL = FFh if ???
  824.         ES:DI -> ???
  825. Note:    called by NETBIOS.EXE v3.01
  826. --------N-2F7A4E-----------------------------
  827. INT 2F - Novell LAN Workplace for DOS - RARPD.EXE - INSTALLATION CHECK
  828.     AX = 7A4Eh
  829. Return: AX = 7AFFh if installed
  830. SeeAlso: AX=7A4Fh"RARPD"
  831. --------N-2F7A4F-----------------------------
  832. INT 2F - Novell LAN Workplace for DOS - RARPD.EXE - UNINSTALL
  833.     AX = 7A4Fh
  834. Return: AX = 7AFFh if installed
  835.     DX,ES destroyed
  836. Note:    this call conflicts with SNMP.EXE (both RARPD and SNMP are supplied
  837.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  838.       RARPD as SNMP checks whether it is already installed!
  839. SeeAlso: AX=7A4Eh"RARPD",AX=7A4Fh/BX=0001h
  840. --------N-2F7A4FBX0001-----------------------
  841. INT 2F - Novell NetWare - SNMP.EXE - INSTALLATION CHECK
  842.     AX = 7A4Fh
  843.     BX = 0001h
  844. Return: AX = 7AFFh if installed
  845. Note:    this call conflicts with RARPD.EXE (both SNMP and RARPD are supplied
  846.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  847.       RARPD as SNMP checks whether it is already installed!
  848. SeeAlso: AX=7A4Fh"RARPD",AX=7A4Fh/BX=0002h
  849. --------N-2F7A4FBX0002-----------------------
  850. INT 2F - Novell NetWare - SNMP.EXE - ???
  851.     AX = 7A4Fh
  852.     BX = 0002h
  853. Return: AL = status
  854.         4Fh if failed
  855.         FFh if successful
  856. SeeAlso: AX=7A4Fh/BX=0001h
  857. --------N-2F7A80-----------------------------
  858. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
  859.     AX = 7A80h
  860. Return: nothing
  861. Notes:    called on abnormal exit of the NetWare shell to notify other Novell
  862.       TSRs that it is unsafe to call the shell in the future.
  863.     must be passed through so that all interested programs see the exit
  864.     on receiving this call, IPXODI clears an internal pointer to a
  865.       default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
  866.       0000h:0000h and stops calling it
  867. SeeAlso: AX=7A81h
  868. --------N-2F7A81-----------------------------
  869. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
  870.     AX = 7A81h
  871.     CX:DX -> shell's INT 21h entry point
  872. Return: nothing
  873. Notes:    the shell calls this function as it loads to allow interested TSRs
  874.       and drivers to make a local copy of the shell's entry point
  875.     must be passed through so that all interested programs see it
  876. --------N-2F7A85-----------------------------
  877. INT 2F C - Novell NetWare - shell 3.01 - BROADCAST INFORM
  878.     AX = 7A85h
  879.     CX = broadcast server number
  880. Return: CX = 0000h if broadcast message handled by another program
  881.     CX unchanged if broadcast not handled
  882. SeeAlso: AX=7A21h
  883. --------N-2F7A90-----------------------------
  884. INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
  885.     AX = 7A90h
  886. Return: AL = 00h if present
  887.         BX = ???
  888.         CX = PSP segment of NETBIOS resident code
  889. SeeAlso: AX=7AFEh
  890. --------N-2F7AA0-----------------------------
  891. INT 2F U - Personal NetWare - HRMIB - ???
  892.     AX = 7AA0h
  893.     BX = function
  894.         0000h ???
  895.         0001h ???
  896. Return: ???
  897. SeeAlso: AX=7A2Fh/BX=0EDCh
  898. --------N-2F7AC1-----------------------------
  899. INT 2F - LAN HiJack - LHR - DISABLE???
  900.     AX = 7AC1h
  901. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  902.       to take over control of a workstation remotely; LHR is the program
  903.       run on the slave workstation
  904. SeeAlso: AX=7AC8h,AX=7AC9h,AX=7ACFh
  905. --------N-2F7AC2-----------------------------
  906. INT 2F - LAN HiJack - LHR - SYNCHRONIZE SHIFT STATES???
  907.     AX = 7AC2h
  908. Note:    sets BIOS keyboard status byte to an internal variable
  909. SeeAlso: AX=7AC3h,AX=7ACFh
  910. --------N-2F7AC3-----------------------------
  911. INT 2F - LAN HiJack - LHR - CLEAR ??? FLAG
  912.     AX = 7AC3h
  913. SeeAlso: AX=7AC2h,AX=7ACFh
  914. --------N-2F7AC8-----------------------------
  915. INT 2F - LAN HiJack - LHR - ENABLE FUNCTIONS
  916.     AX = 7AC8h
  917.     BL = function(s) to enable (see #1602)
  918. SeeAlso: AX=7AC1h,AX=7AC9h,AX=7ACFh
  919.  
  920. Bitfields for LAN HiJack function(s) to enable/disable:
  921. Bit(s)    Description    (Table 1602)
  922.  0    ???
  923.  1    remote keyboard enabled
  924.  2    support remote's mouse
  925.  3-7    unused
  926. --------N-2F7AC9-----------------------------
  927. INT 2F - LAN HiJack - LHR - DISABLE FUNCTIONS
  928.     AX = 7AC9h
  929.     BL = function(s) to disable (see #1602)
  930. SeeAlso: AX=7AC1h,AX=7AC8h
  931. --------N-2F7ACA-----------------------------
  932. INT 2F - LAN HiJack - LHJ - ???
  933.     AX = 7ACAh
  934.     BL = ???
  935. Return: ???
  936. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  937.       to take over control of a workstation remotely; LHJ is the program
  938.       run on the controlling workstation
  939. --------N-2F7ACB-----------------------------
  940. INT 2F - LAN HiJack - LHJ - ???
  941.     AX = 7ACBh
  942.     BX = ???
  943. Return: ???
  944. Note:    this function appears to be related to the keyboard
  945. SeeAlso: AX=7ACCh
  946. --------N-2F7ACC-----------------------------
  947. INT 2F - LAN HiJack - LHJ - ???
  948.     AX = 7ACCh
  949.     BX = ???
  950. Return: ???
  951. Note:    this function appears to be related to the mouse
  952. SeeAlso: AX=7ACBh
  953. --------N-2F7ACFBX0000-----------------------
  954. INT 2F - LAN HiJack - LHR - INSTALLATION CHECK
  955.     AX = 7ACFh
  956.     BX = 0000h
  957. Return: BX = segment of resident code if installed
  958. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  959.       to take over control of a workstation remotely; LHR is the program
  960.       run on the slave workstation
  961. --------N-2F7AF0-----------------------------
  962. INT 2F - Novell NetWare - DOSNP.EXE v1.30G - INSTALLATION CHECK
  963.     AX = 7AF0h
  964. Return: AL = FFh if present
  965.         ES = 7AF0h
  966.         CX = PSP segment of resident code
  967. --------N-2F7AF1-----------------------------
  968. INT 2F - Novell NetWare - Access Server Driver - INSTALLATION CHECK
  969.     AX = 7AF1h
  970.     BL = sequence number (01h first driver, 02h second, 00h no driver)
  971. Return: AX <> 7AF1h if present
  972.         BH = total number of drivers
  973.         ---if BL nonzero on entry---
  974.         AL = number of ports provided by specified driver
  975.         ES:DI -> driver entry point
  976.               (see #1603,#1604,#1605,#1606,#1607,#1608,#1609,#1610)
  977.         ES:DX -> ID string
  978. SeeAlso: INT 7A/BX=001Ch
  979.  
  980. (Table 1603)
  981. Call Access Server driver "initialize port" function with:
  982.     AH = 01h
  983.     AL = port number (00h-0Fh)
  984.     ES:BX -> configuration parameter block (see #1616)
  985.     interrupts disabled
  986. Return: CF clear if successful
  987.     CF set on error
  988. SeeAlso: #1604
  989.  
  990. (Table 1604)
  991. Call Access Server driver "get port status" function with:
  992.     AH = 02h
  993.     AL = port number (00h-0Fh)
  994.     interrupts disabled
  995. Return: CF clear if successful
  996.         BL = transmitter status (see #1613)
  997.         BH = receiver status (see #1614)
  998.         DL = external status signals (see #1615)
  999.     CF set on error
  1000.     interrupts disabled
  1001. SeeAlso: #1603,#1605,#1608
  1002.  
  1003. (Table 1605)
  1004. Call Access Server driver "get input from port" function with:
  1005.     AH = 03h
  1006.     AL = port number (00h-0Fh)
  1007.     CX = size of data buffer
  1008.     ES:BX -> buffer for data
  1009.     interrupts disabled
  1010. Return: CF clear if successful
  1011.     CF set on error
  1012.     interrupts disabled
  1013.     CX = number of bytes read
  1014. Note:    the driver will add a NUL to the buffer when a break signal is detected
  1015. SeeAlso: #1605,#1606
  1016.  
  1017. (Table 1606)
  1018. Call driver "send output data to port" function with:
  1019.     AH = 04h
  1020.     AL = port number (00h-0Fh)
  1021.     CX = number of bytes to send
  1022.     ES:BX -> buffer containing data
  1023.     interrupts disabled
  1024. Return: CF clear if successful
  1025.     CF set on error
  1026.     interrupts disabled
  1027.     CX = number of bytes actually written
  1028. SeeAlso: #1605,#1607
  1029.  
  1030. (Table 1607)
  1031. Call driver "get I/O character counts" function with:
  1032.     AH = 05h
  1033.     AL = port number (00h-0Fh)
  1034.     interrupts disabled
  1035. Return: CF clear if successful
  1036.         BX = number of bytes pending transmission
  1037.         CX = number of bytes available for reading
  1038.     CF set on error
  1039.     interrupts disabled
  1040. SeeAlso: #1605,#1606
  1041.  
  1042. (Table 1608)
  1043. Call driver "control XON/XOFF" function with:
  1044.     AH = 06h
  1045.     AL = port number (00h-0Fh)
  1046.     DL = new state
  1047.         (00h software flow control disabled, else enabled)
  1048.     interrupts disabled
  1049. Return: CF clear if successful
  1050.     CF set on error
  1051.     interrupts disabled
  1052. SeeAlso: #1609
  1053.  
  1054. (Table 1609)
  1055. Call driver "get error counts and statistics" function with:
  1056.     AH = 07h
  1057.     AL = port number (00h-0Fh)
  1058.     ES:BX -> buffer for statistics (see #1617)
  1059.     interrupts disabled
  1060. Return: CF clear if successful
  1061.         ES:BX buffer filled
  1062.     CF set on error
  1063.     interrupts disabled
  1064. SeeAlso: #1610,#1611,#1612
  1065.  
  1066. (Table 1610)
  1067. Call driver "general request" function with:
  1068.     AH = 08h
  1069.     AL = port number (00h-0Fh)
  1070.     DX = requested operations
  1071.         bit 0: flush transmit buffers
  1072.         bit 1: flush receive buffers
  1073.         bit 4: define XON/XOFF characters
  1074.     ES:BX -> XON/XOFF characters (see #1618) if DX bit 4 set
  1075.     interrupts disabled
  1076. Return: CF clear if successful
  1077.     CF set on error
  1078.     interrupts disabled
  1079.  
  1080. (Table 1611)
  1081. Call driver "deadman timer management" function with:
  1082.     AH = 09h
  1083.     AL = port number (00h-0Fh)
  1084.     BX = next time interval in seconds (0000h to disable timer)
  1085.     interrupts disabled
  1086. Return: CF clear
  1087.     interrupts disabled
  1088. SeeAlso: #1612
  1089.  
  1090. (Table 1612)
  1091. Call driver "get buffer sizes" function with:
  1092.     AH = 0Ah
  1093.     AL = port number (00h-0Fh)
  1094.     interrupts disabled
  1095. Return: CF clear if successful
  1096.        BX = size of transmit buffer
  1097.        CX = size of receive buffer
  1098.     CF set on error
  1099.     interrupts disabled
  1100. SeeAlso: #1611
  1101.  
  1102. (Table 1613)
  1103. Values for Access Server transmitter status:
  1104.  00h    uninitialized
  1105.  01h    ready, not transmitting
  1106.  02h    transmitting
  1107.  03h    XOFF received
  1108.  04h    transmitting, buffer full
  1109.  05h    XOFF received and buffer full
  1110.  
  1111. (Table 1614)
  1112. Values for Access Server receiver status:
  1113.  00h    uninitialized
  1114.  01h    ready
  1115.  02h    receive buffer full, data may have been lost
  1116.  
  1117. Bitfields for external status signals:
  1118. Bit(s)    Description    (Table 1615)
  1119.  7,6    undefined
  1120.  5    CTS active
  1121.  4    DSR active
  1122.  3    DCD active
  1123.  2,1    undefined
  1124.  0    ring indicator
  1125.  
  1126. Format of Access Server configuration parameter block:
  1127. Offset    Size    Description    (Table 1616)
  1128.  00h    BYTE    receive baud rate index
  1129.         00h 50 bps, 01h 75 bps, 02h 110 bps, 03h 134.5 bps,
  1130.         04h 150 bps, 05h 300 bps, 06h 600 bps, 07h 1200 bps,
  1131.         08h 1800 bps, 09h 2000 bps, 0Ah 2400 bps, 0Bh 3600 bps,
  1132.         0Ch 4800 bps, 0Dh 7200 bps, 0Eh 9600 bps, 0Fh 19200 bps,
  1133.         10h 38400 bps, 11h 57600 bps, 12h 115200 bps
  1134.  01h    BYTE    receive bits per character (0=5 bits..3=8 bits)
  1135.  02h    BYTE    receive stop bits
  1136.  03h    BYTE    receive parity
  1137.         00h none, 01h odd, 02h even, 03h mark, 04h space
  1138.  04h    BYTE    transmit baud rate index (same as receive baud rate)
  1139.  05h    BYTE    transmit bits per character (0=5 bits..3=8 bits)
  1140.  06h    BYTE    transmit stop bits
  1141.  07h    BYTE    transmit parity (same as receive parity)
  1142.  08h    BYTE    DTR state (00h off, 01h on)
  1143.  09h    BYTE    RTS state (00h off, 01h on)
  1144.  0Ah    BYTE    flow control (00h none, 01h XON/XOFF, 02h RTS/CTS, 03h both)
  1145.  0Bh    BYTE    break control (00h off, 01h on)
  1146.  
  1147. Format of Access Server statistics:
  1148. Offset    Size    Description    (Table 1617)
  1149.  00h    BYTE    port number
  1150.  01h    BYTE    external status signals (see #1615)
  1151.  02h    BYTE    transmitter status (see #1613)
  1152.  03h    BYTE    receiver status (see #1614)
  1153.  04h    DWORD    number of characters received
  1154.  08h    DWORD    number of characters transmitted
  1155.  0Ch    WORD    input parity errors
  1156.  0Eh    WORD    input framing errors
  1157.  10h    WORD    lost characters due to hardware overrun
  1158.  12h    WORD    lost characters due to data buffer overrun
  1159. Note:    the counts are not allowed to wrap around; once a count reaches FFFFh
  1160.       or FFFFFFFFh, it is no longer incremented
  1161.  
  1162. Format of Access Server XON/XOFF characters:
  1163. Offset    Size    Description    (Table 1618)
  1164.  00h    BYTE    04h (number of bytes following)
  1165.  01h    BYTE    transmit XON character
  1166.  02h    BYTE    transmit XOFF character
  1167.  03h    BYTE    receive XON character
  1168.  04h    BYTE    receive XOFF character
  1169. --------N-2F7AFE-----------------------------
  1170. INT 2F - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
  1171.     AX = 7AFEh
  1172. Return: AL = FFh if present
  1173.         ES = (data???) segment of DOSNP
  1174. Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
  1175.        NetWare
  1176. Note:    the NetWare shell calls this function and refuses to load if DOSNP is
  1177.       present
  1178. SeeAlso: AX=7A90h
  1179. --------N-2F7AFFBX0000-----------------------
  1180. INT 2F - Novell NetWare - TBMI v1.1+ - INSTALLATION CHECK / Windows SUPPORT
  1181.     AX = 7AFFh
  1182.     BX = 0000h
  1183.     CX = 4E65h ("Ne")
  1184.     DX = 7457h ("tW")
  1185.     ES:DI -> Windows support procedure (see #1619)
  1186. Return: AL = FFh if installed
  1187.         CX = configured sockets (14h)
  1188.         DS:SI -> data table ???
  1189.         ES:DI -> IPX far call handler
  1190. Notes:    for IPX/SPX this call reportedly returns DS:SI pointing to the table
  1191.       of pointers to service events queue head and tail
  1192.     this function is also supported by IPXODI; v2.12 does not change DS,
  1193.       but does set SI to an internal address
  1194. SeeAlso: AX=7AFFh/BX=0001h
  1195.  
  1196. (Table 1619)
  1197. Values Windows support procedure called with:
  1198.     BP = function
  1199.         0001h Get ECB
  1200.         BX = socket number
  1201.         Return: ES:SI -> ECB or 0000h:0000h if none available
  1202.         0002h Count Listen ECBs
  1203.         AX = BX = socket
  1204.         Return: CX = number of listen ECBs for socket
  1205.                 (must be >= 2 for SPX to work)
  1206.         0003h ???
  1207.         0004h Inform task switcher of ECB locations
  1208.         Note:    registers other than those listed above are equal
  1209.               to the values when IPX was called
  1210. Note:    the support function will not be called if IPX is called with BX
  1211.       bit 15 set
  1212. --------N-2F7AFFBX0001-----------------------
  1213. INT 2F - Novell NetWare - TBMI v1.1+, shell v3.01d - INSTALLATION CHECK???
  1214.     AX = 7AFFh
  1215.     BX = 0001h
  1216.     CX = 4E65h ("Ne")
  1217.     DX = 7457h ("tW")
  1218. Return: AL = FFh if installed
  1219.         CX = ???  (8000h)
  1220.         SI = ??? (or -> ???) (0002h and 0007h seen)
  1221.         ES:DI -> IPX far call handler
  1222.         ES:DX -> 6-byte data area ???
  1223. Note:    this function is also supported by IPXODI, but IPXODI v2.12 does not
  1224.       return ES:DX
  1225. SeeAlso: AX=7AFFh/BX=0000h
  1226. --------d-2F7F00-----------------------------
  1227. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
  1228.     AX = 7F00h
  1229. Return: AL = FFh if installed
  1230. SeeAlso: AX=7F01h,AX=7F02h,AX=7F03h
  1231. --------d-2F7F01-----------------------------
  1232. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
  1233.     AX = 7F01h
  1234.     DS:DX -> command record (see #1620)
  1235. Return: AL = status
  1236.         00h successful
  1237.         else error code
  1238. SeeAlso: AX=7F00h,AX=7F02h,INT 11/AH=FFh"SDLP",INT 21/AX=4402h"ASPI"
  1239. SeeAlso: INT 4F/AX=8100h
  1240.  
  1241. Format of CD-ROM redirector command record:
  1242. Offset    Size    Description    (Table 1620)
  1243.  00h    BYTE    ID
  1244.  01h 10 BYTEs    CDB (Command Descriptor Block) for operation
  1245.  0Bh    WORD    segment of buffer
  1246.  0Dh    WORD    offset of buffer
  1247.  0Fh    BYTE    status
  1248.  10h    BYTE    sense
  1249.  12h    WORD    count
  1250. --------d-2F7F02-----------------------------
  1251. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
  1252.     AX = 7F02h
  1253. SeeAlso: AX=7F00h,AX=7F01h
  1254. --------d-2F7F03-----------------------------
  1255. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
  1256.     AX = 7F03h
  1257. Return: AL = status
  1258.         00h successful
  1259.         01h unable to uninstall
  1260. SeeAlso: AX=7F00h
  1261. ----------2F7F24-----------------------------
  1262. INT 2F - Multiplex - ???
  1263.     AX = 7F24h
  1264.     ???
  1265. Return: ???
  1266. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  1267. ----------2F7F26-----------------------------
  1268. INT 2F - Multiplex - ???
  1269.     AX = 7F26h
  1270.     ???
  1271. Return: ???
  1272. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  1273. --------N-2F8000-----------------------------
  1274. INT 2F - EASY-NET - INSTALLATION CHECK
  1275.     AX = 8000h
  1276. Return: AL = 00h not installed
  1277.          FFh installed
  1278. Program: EASY-NET is a shareware two-machine serial-port network
  1279. --------N-2F8000-----------------------------
  1280. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  1281.     AX = 8000h
  1282. Return: AL = FFh if installed
  1283.         BX = CS of resident code
  1284.         CX = ??? (03FCh)
  1285. Program: TurboNET is a NetBIOS-based file redirector and server; a
  1286.       demonstration version may be downloaded from Nanosoft's BBS
  1287. SeeAlso: AX=8100h
  1288. --------t-2F8000-----------------------------
  1289. INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
  1290.     AX = 8000h
  1291.     DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
  1292. Return: AL = status
  1293.         00h no CS_TSR-compliant TSRs installed
  1294.         01h installed, but signature did not match
  1295.         FFh installed, signature matches
  1296.         ES:DI -> resident process block (see #1621) of last installed
  1297.               TSR (if DS:SI pointed at signature on entry)
  1298. Program: the CS_TSR specification is a standardized TSR interface by Compact
  1299.       Soft group in Kiev, Ukraine
  1300. Desc:    determine whether any CS_TSR-compliant TSRs are installed on the
  1301.       selected multiplex number
  1302. Range:    AH=80h to AH=FFh
  1303. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  1304.  
  1305. Format of CS_TSR process block:
  1306. Offset    Size    Description    (Table 1621)
  1307.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  1308.  04h    BYTE    INT 2F multiplex number
  1309.  05h    WORD    virtual process handle (unique among loaded TSRs)
  1310.  07h  2 BYTEs    version (binary minor version, then major version)
  1311.  09h    WORD    PSP segment of TSR
  1312.  0Bh    DWORD    pointer to ASCIZ program name
  1313.  0Fh  3 BYTEs    program creation date (day, month, year)
  1314.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  1315.  15h  3 BYTEs    process start date (day, month, year)
  1316. --------F-2F8000DX0000-----------------------
  1317. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  1318.     AX = 8000h
  1319.     DX = 0000h
  1320.     DI = 0000h
  1321. Return: AL = FFh if installed
  1322.     DX:DI -> signature "FaxBiosjpc"
  1323. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  1324. SeeAlso: AH=2Ah,AX=80FBh
  1325. --------N-2F8001-----------------------------
  1326. INT 2F - Nanosoft, Inc. TurboNET server - ???
  1327.     AX = 8001h
  1328.     DS:SI -> 16-byte buffer for ???
  1329. Return: AH = status
  1330.         00h successful
  1331.         01h error (TurboNET busy)
  1332. Note:    makes NetBIOS calls
  1333. --------t-2F8001-----------------------------
  1334. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  1335.     AX = 8001h
  1336.     DS:SI -> ASCIZ signature string for desired TSR (see #1622)
  1337. Return: BX = process handle or 0000h if specified TSR not installed
  1338.     ES:DI -> process block for TSR (see #1621) if BX<>0000h
  1339. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  1340.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  1341.       ASCII v4.23 which is identical except for the changed attribution
  1342.       and version (in fact, some instances of "4.23" were missed); the
  1343.       hacked copy requires the signature string
  1344.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  1345.       simple signature "ASCII"
  1346. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  1347.  
  1348. (Table 1622)
  1349. Values for CS_TSR signature strings:
  1350.  "ASCII"    ASCII, a popup ASCII table with character input
  1351.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  1352.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  1353. --------t-2F8002-----------------------------
  1354. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  1355.     AX = 8002h
  1356.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  1357. Return: ES:DI -> process block for specified TSR (see #1621)
  1358.         unchanged if no match for process handle
  1359. Note:    This function is used to allocate a process handle when the TSR
  1360.       installs itself, by setting ES:DI to point at something other than
  1361.       a CS_TSR process block's signature string and iterating through the
  1362.       possible process handles (0001h to FFFFh) until ES:DI is returned
  1363.       unchanged
  1364. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  1365. --------t-2F8003-----------------------------
  1366. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  1367.     AX = 8003h
  1368.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  1369.     other registers vary by TSR
  1370. Return: vary by TSR, unchanged if not supported
  1371. Program: the CS_TSR specification is a standardized TSR interface by Compact
  1372.       Soft group in Kiev, Ukraine
  1373. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  1374. --------F-2F80FB-----------------------------
  1375. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  1376.     AX = 80FBh
  1377.     BX = function number (see #1623)
  1378.     DX:DI -> command buffer
  1379.           (see #1625,#1628,#1629,#1630,#1631,#1632,#1637,#1643,#1650)
  1380. Return: AL = FFh if submitted OK
  1381.     CX = result code (see #1624)
  1382. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  1383. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  1384.  
  1385. (Table 1623)
  1386. Values for FaxBIOS function number:
  1387.  0001h    SYS_LOGIN
  1388.  0002h    SYS_LOGOUT
  1389.  0003h    SYS_GET_FAXAPP_INFO
  1390.  0004h    STAT_IO_GET
  1391.  0005h    STAT_FAXBIOS_GET
  1392.  0006h    PDIR_OPEN
  1393.  0007h    PDIR_CLOSE (see #1633)
  1394.  0008h    PDIR_READ_PERSON (see #1634)
  1395.  0009h    PDIR_PARTIAL_READ
  1396.  000Ah    PDIR_READ_GROUP
  1397.  000Bh    PDIR_READ_MEMBER_LIST
  1398.  000Ch    PDIR_WRITE_PERSON
  1399.  000Dh    PDIR_WRITE_GROUP
  1400.  000Eh    PDIR_DELETE_PERSON
  1401.  000Fh    PDIR_DELETE_GROUP
  1402.  0010h    PDIR_READ_GROUP_LIST
  1403.  0011h    PDIR_IN_GROUP
  1404.  0012h    PDIR_OUT_GROUP
  1405.  0013h    SCHED_OPEN (see #1635)
  1406.  0014h    SCHED_ADD_DEST (see #1636)
  1407.  0015h    SCHED_ADD_FILE (see #1637)
  1408.  0016h    SCHED_SET_PARAMS (see #1638)
  1409.  0017h    SCHED_CANCEL (see #1635)
  1410.  0018h    SCHED_CLOSE (see #1639)
  1411.  0019h    SLOG_OPEN (see #1640)
  1412.  001Ah    SLOG_CLOSE (see #1640)
  1413.  001Bh    SLOG_SHORT_ENV_STAT
  1414.  001Ch    SLOG_LONG_ENV_STAT
  1415.  001Dh    SLOG_DEST_STAT
  1416.  001Eh    SLOG_FILE_STAT
  1417.  001Fh    SLOG_CANCEL_ENV
  1418.  0020h    RLOG_OPEN (see #1640)
  1419.  0021h    RLOG_CLOSE (see #1640)
  1420.  0022h    RLOG_READ
  1421.  0023h    GRAPH_GET_FILE_TYPE (see #1641)
  1422.  0024h    GRAPH_EXPORT_FILE
  1423.  0025h    GRAPH_GET_LAYOUT_INFO
  1424.  0026h    GRAPH_CREATE_FILE (see #1642)
  1425.  0027h    GRAPH_CLOSE_FILE (see #1643)
  1426.  0028h    GRAPH_CREATE_PAGE (see #1644)
  1427.  0029h    GRAPH_WRITE (see #1645)
  1428.  002Ah    GRAPH_END_PAGE
  1429.  002Bh    GRAPH_OPEN_FILE (see #1646)
  1430.  002Ch    GRAPH_GOTO_PAGE (see #1647)
  1431.  002Dh    GRAPH_READ (see #1648)
  1432.  002Eh    IOCTL_GET
  1433.  002Fh    IOCTL_SET
  1434.  0030h    IOCTL_ANSWER_FAX (see #1649)
  1435.  0031h    IOCTL_DIAL (see #1650)
  1436.  
  1437. (Table 1624)
  1438. Values for FaxBIOS result code:
  1439.  0000h    successful
  1440.  0001h    not prepared or servicing another client (busy)
  1441.  0002h    call failed due to sharing (LOCKED)
  1442.  0003h    logged-in client limit reached (FULL)
  1443.  0004h    transport denied (TRANSPORT_DENIED)
  1444.  0005h    not implemented (NOT_IMPLEMENTED)
  1445.  0006h    aborted while in progress (ABORTED)
  1446.  0007h    permissions denied (PERMISSION_DENIED)
  1447.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  1448.  0080h    unspecified system error occurred
  1449.  0081h    an internal file was not found
  1450.  0082h    an internal file could not be created
  1451.  0083h    an internal file could not be opened
  1452.  0084h    an internal file could not be closed
  1453.  0085h    error occurred writing to an internal file
  1454.  0086h    error occurred reading from an internal file
  1455.  0087h    bad or corrupted file encountered
  1456.  0088h    an access violation occurred
  1457.  0089h    an internal file is empty
  1458.  008Ah    insufficient memory to process request
  1459.  008Bh    FaxBIOS was unable to issue a handle
  1460.  008Ch    an error internal to FaxBIOS occurred
  1461.  008Dh    no room on disk
  1462.  0100h    unspecified error accessing client file
  1463.  0101h    file not found
  1464.  0102h    creation fault
  1465.  0103h    open fault
  1466.  0104h    close fault
  1467.  0105h    write fault
  1468.  0106h    read fault
  1469.  0107h    file corrupted
  1470.  0108h    access violation
  1471.  0109h    empty file
  1472.  0200h    unspecified argument error
  1473.  0201h    bad function
  1474.  0202h    bad option
  1475.  0203h    bad structure size
  1476.  0204h    bad buffer size
  1477.  0205h    bad client ID
  1478.  0300h    unspecified error with token
  1479.  0301h    cover sheet token was invalid
  1480.  0302h    logo token was invalid
  1481.  0303h    signature token was invalid
  1482.  0304h    font token was invalid
  1483.  0305h    phone directory token was invalid
  1484.  0306h    outbound route token was invalid
  1485.  0307h    priority token was invalid
  1486.  0308h    sort token was invalid
  1487.  0309h    billing token was invalid
  1488.  0400h    unspecified handle error
  1489.  0401h    bad Phone Directory handle
  1490.  0402h    bad scheduling handle
  1491.  0403h    bad read send log handle
  1492.  0404h    bad read receive log handle
  1493.  0405h    bad graphics handle
  1494.  0500h    data passed in structure was invalid
  1495.  0501h    name field given is invalid
  1496.  0502h    phone number given is invalid
  1497.  0503h    poll code submitted is invalid
  1498.  0504h    file type constant was invalid
  1499.  0505h    BFT constant not defined or supported
  1500.  0506h    resolution not defined or supported
  1501.  0507h    page length not defined or supported
  1502.  0508h    page width not defined or supported
  1503.  0509h    date & time requested are ridiculous
  1504.  050Ah    Subject text was not an ASCIZ string
  1505.  050Bh    From text was not an ASCIZ string
  1506.  050Ch    requested envelope ID was not found
  1507.  050Dh    requested envelope ID is not valid
  1508.  050Eh    envelope requested was not found
  1509.  050Fh    destination index is out of range
  1510.  0510h    file index is out of range
  1511.  0511h    index into receive log is out of range
  1512.  0512h    file name specified was incomplete or invalid
  1513.  0513h    page selected was out of range
  1514.  0514h    bit width more than byte width
  1515.  0515h    mode for open is not defined
  1516.  0516h    person index is out of range
  1517.  0517h    person ID is out of range
  1518.  0518h    group index out of range or invalid
  1519.  0519h    group ID out of range or invalid
  1520.  051Ah    range of indices to read is invalid
  1521.  051Bh    group name given is invalid
  1522.  051Ch    field_to_use is badly specified
  1523.  051Dh    predicate invalid for field specified
  1524.  0600h    unspecified client procedure error
  1525.  0601h    device of interest is not present
  1526.  0602h    device of interest has been removed
  1527.  0603h    device of interest is not responding
  1528.  0604h    device of interest is disabled
  1529.  0605h    could not dial because device was in use
  1530.  0606h    maximum destination limit exceeded
  1531.  0607h    maximum file limit exceeded
  1532.  0608h    scheduling closed with no destination
  1533.  0609h    scheduling closed with no files or poll
  1534.  060Ah    scheduling closed with no parameters specified
  1535.  060Bh    file type specified does not match file
  1536.  060Ch    file type specified is not supported
  1537.  060Dh    file submitted is not exportable
  1538.  060Eh    file type specified is not imageable
  1539.  060Fh    error converting file
  1540.  0610h    envelope could not be cancelled
  1541.  0611h    Phone Directory is full
  1542.  0612h    record is already in the Phone Directory
  1543.  0613h    selected group in Phone Directory is full
  1544.  0614h    person is already in the group
  1545.  0615h    person is not in the group & cannot be removed
  1546.  0616h    a graphics file to be created already exists
  1547.  0617h    a graphics file to be read is empty
  1548.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  1549.  0619h    graph read or write attempted without goto or create
  1550.  061Ah    graph page contains no data
  1551.  061Bh    Phone Directory is already open for this client
  1552.  061Ch    schedule log is already open for this client
  1553.  061Dh    receive log is aready open for this client
  1554.  061Eh    Phone Directory function requires write mode
  1555.  0800h    denied exclusive use of the API
  1556.  
  1557. Format of FaxBIOS SYS_LOGIN command buffer:
  1558. Offset    Size    Description    (Table 1625)
  1559.  00h    WORD    structure size
  1560.  02h    WORD    function number
  1561.  04h    WORD    return code
  1562.  06h    WORD    client ID
  1563.  08h    WORD    API Major Version
  1564.  0Ah    WORD    API Minor Version
  1565.  0Ch    DWORD    reserved for manufacturer's use
  1566.  10h 22 BYTEs    manufacturer's ID
  1567.  26h    WORD    highest possible device number
  1568.  28h    WORD    maximum destinations per envelope
  1569.  2Ah    WORD    maximum files per envelope
  1570.  2Ch    WORD    FaxBIOS capabilities (see #1626)
  1571.  2Eh    DWORD    T.30 capabilities (see #1627)
  1572.  32h    WORD    IPC handle
  1573.  34h    DWORD    amount of memory needed to load
  1574.  38h    WORD    scope (00h for public, nonzero for private)
  1575.  3Ah  6 BYTEs    future expansion
  1576.  40h    WORD    structure size
  1577.  
  1578. Bitfields for FaxBIOS capabilities:
  1579. Bit(s)    Description    (Table 1626)
  1580.  0    transmit supported
  1581.  1    receive supported
  1582.  2    IOCTL supported
  1583.  3    IOCTL_DIAL supported
  1584.  4    IOCTL_ANSWER_FAX supported
  1585.  5    manual transmit supported
  1586.  6    optional phone services supported
  1587.  7    canonical phone objects
  1588.  8    seam with next supported
  1589.  
  1590. Bitfields for T.30 capabilities:
  1591. Bit(s)    Description    (Table 1627)
  1592.  0    low vertical resolution (minimum)
  1593.  1    high vertical resolution
  1594.  2    page width 107mm (4.21 in)
  1595.  3    page width 151mm (5.91 in)
  1596.  4    page width 215mm (8.46 in) (minimum)
  1597.  5    page width 255mm (10.04 in)
  1598.  6    page width 303mm (11.93 in)
  1599.  7    unused
  1600.  8    page length 297mm (11.69 in) (minimum)
  1601.  9    page length 364mm (14.33 in)
  1602.  10    page length 279mm (11 in)
  1603.  11    page length unlimited
  1604.  12    Group 4 resolution 300x300
  1605.  13    Group 4 resolution 400x400
  1606.  14    able to respond to poll from remote
  1607.  15    able to poll remote
  1608.  16    binary file transfer supported
  1609.  
  1610. Format of FaxBIOS SYS_LOGOUT command buffer:
  1611. Offset    Size    Description    (Table 1628)
  1612.  00h    WORD    structure size
  1613.  02h    WORD    function number
  1614.  04h    WORD    return code
  1615.  06h    WORD    client ID
  1616.  08h    DWORD    client tag (for client's internal use)
  1617.  0Ch  6 BYTEs    future expansion
  1618.  12h    WORD    structure size
  1619.  
  1620. Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
  1621. Offset    Size    Description    (Table 1629)
  1622.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1623.  0Ch 80 BYTEs    FaxBIOS data
  1624.  5Ch 80 BYTEs    default cover
  1625.  ACh 80 BYTEs    default logo
  1626.  FCh 80 BYTEs    default signature
  1627. 14Ch 80 BYTEs    default font 10
  1628. 19Ch 80 BYTEs    default font 165
  1629. 1ECh 80 BYTEs    default user font
  1630. 23Ch 80 BYTEs    default Pdir
  1631. 28Ch 80 BYTEs    default sort
  1632. 2DCh 10 BYTEs    default bill
  1633. 2E6h 10 BYTEs    default route
  1634. 2F0h 40 BYTEs    default cover sheet form
  1635. 318h 34 BYTEs    valid dial characters
  1636. 33Ah  6 BYTEs    local country code
  1637. 340h  6 BYTEs    local city or area code
  1638. 346h  6 BYTEs    future expansion
  1639. 34Ch    WORD    structure size
  1640.  
  1641. Format of FaxBIOS STAT_IO_GET command buffer:
  1642. Offset    Size    Description    (Table 1630)
  1643.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1644.  0Ch    WORD    device number
  1645.  0Eh    WORD    current activity
  1646.  10h    WORD    number of rings (if ringing)
  1647.  12h    WORD    number of fascimiles transmitted
  1648.  14h    WORD    number of fascimiles received
  1649.  16h    WORD    status of last transmission
  1650.  18h    WORD    envelope number of last transmission
  1651.  1Ah    WORD    index of last destination in envelope
  1652.  1Ch    WORD    status of last reception
  1653.  1Eh    WORD    current page (if session in progress)
  1654.  20h 80 BYTEs    current file
  1655.  70h 104 BYTEs    remote number
  1656.  D8h 20 BYTEs    last name
  1657.  ECh 20 BYTEs    first name
  1658. 100h 32 BYTEs    company name
  1659. 120h 32 BYTEs    notes
  1660. 140h    WORD    current envelope ID (if sending)
  1661. 142h    WORD    total pages in transmission (if sending)
  1662. 144h  6 BYTEs    future expansion
  1663. 14h    WORD    structure size
  1664.  
  1665. Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
  1666. Offset    Size    Description    (Table 1631)
  1667.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1668.  0Ch    WORD    status ID
  1669.  0Eh    WORD    currenty FaxBIOS function number
  1670.  10h    WORD    current Client ID being serviced
  1671.  12h    WORD    number of things to do
  1672.  14h    WORD    number of them done
  1673.  16h    WORD    number of pages to do (if any)
  1674.  18h    WORD    number of them done
  1675.  1Ah    WORD    number of files to do
  1676.  1Ch    WORD    number of them done
  1677.  1Eh 80 BYTEs    current File
  1678.  6Eh    WORD    0 if all devices are idle
  1679.  70h    WORD    number of fascimiles transmitted
  1680.  72h    WORD    number of fascimiles received
  1681.  74h    WORD    status of last transmission in system
  1682.  76h    WORD    envelope ID of last transmission
  1683.  78h    WORD    index of last destination in envelope
  1684.  7Ah    WORD    status of last reception in system
  1685.  7Ch    DWORD    time of next transmission
  1686.  80h  6 BYTEs    future expansion
  1687.  86h    WORD    structure size
  1688.  
  1689. Format of FaxBIOS PDIR_OPEN command buffer:
  1690. Offset    Size    Description    (Table 1632)
  1691.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1692.  0Ch 80 BYTEs    Phone Directory token
  1693.  5Ch 80 BYTEs    sort order token
  1694.  ACh    WORD    open Mode (0 = read, 1 = write)
  1695.  AEh    WORD    Phone Directory handle
  1696.  B0h    WORD    number of people
  1697.  B2h    WORD    number of groups
  1698.  B4h    WORD    bitmap of fields supported by partial read
  1699.  B6h  6 BYTEs    future expansion
  1700.  BCh    WORD    structure size
  1701.  
  1702. Format of FaxBIOS PDIR_CLOSE command buffer:
  1703. Offset    Size    Description    (Table 1633)
  1704.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1705.  0Ch    WORD    Phone Directory handle
  1706.  0Eh  6 BYTEs    future expansion
  1707.  14h    WORD    structure size
  1708.  
  1709. Format of FaxBIOS PDIR_READ_PERSON command buffer:
  1710. Offset    Size    Description    (Table 1634)
  1711.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1712.  0Ch    WORD    Phone Directory handle
  1713.  0Eh    WORD    retrieve by index
  1714.  10h    WORD    person ID or index
  1715.  12h    WORD    how many groups person is in
  1716.  14h    WORD    person ID
  1717.  16h 20 BYTEs    last name
  1718.  2Ah 20 BYTEs    first name
  1719.  3Eh 32 BYTEs    company
  1720.  5Eh 32 BYTEs    notes
  1721.  7Eh  6 BYTEs    FAX country code
  1722.  84h  6 BYTEs    FAX city/area code
  1723.  8Ah 14 BYTEs    FAX local number
  1724.  98h 14 BYTEs    FAX extension
  1725.  A6h 24 BYTEs    reserved
  1726.  BEh  6 BYTEs    voice country code
  1727.  C4h  6 BYTEs    voice city/area code
  1728.  CAh 14 BYTEs    voice local number
  1729.  D8h 14 BYTEs    voice extension
  1730.  E6h 24 BYTEs    reserved
  1731.  FEh 10 BYTEs    outbound routing information
  1732. 108h 10 BYTEs    billing information, credit card etc
  1733. 112h    DWORD    remote FAX capabilities
  1734. 116h 21 BYTEs    T.30 poll code of FAX number
  1735. 12Bh 15 BYTEs    reserved
  1736. 13Ah  6 BYTEs    future expansion
  1737. 140h    WORD    structure size
  1738.  
  1739. Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
  1740. Offset    Size    Description    (Table 1635)
  1741.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1742.  0Ch    WORD    scheduler handle
  1743.  0Eh  6 BYTEs    future expansion
  1744.  14h    WORD    structure size
  1745.  
  1746. Format of FaxBIOS SCHED_ADD_DEST command buffer:
  1747. Offset    Size    Description    (Table 1636)
  1748.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1749.  0Ch    WORD    schedule handle
  1750.  0Eh    WORD    device number if manual send wanted
  1751.  10h    WORD    non-zero if poll desired
  1752.  12h    WORD    person ID
  1753.  14h 20 BYTEs    last name
  1754.  28h 20 BYTEs    first name
  1755.  3Ch 32 BYTEs    company
  1756.  5Ch 32 BYTEs    notes
  1757.  7Ch  6 BYTEs    FAX country code
  1758.  82h  6 BYTEs    FAX city/area code
  1759.  88h 14 BYTEs    FAX local number
  1760.  96h 14 BYTEs    FAX extension
  1761.  A4h 24 BYTEs    reserved
  1762.  BCh  6 BYTEs    voice country code
  1763.  C2h  6 BYTEs    voice city/area code
  1764.  C8h 14 BYTEs    voice local number
  1765.  D6h 14 BYTEs    voice extension
  1766.  E4h 24 BYTEs    reserved
  1767.  FCh 10 BYTEs    outbound routing information
  1768. 106h 10 BYTEs    billing information, credit card etc
  1769. 110h    DWORD    remote FAX capabilities
  1770. 114h 21 BYTEs    T.30 poll code of FAX number
  1771. 129h 15 BYTEs    reserved
  1772. 138h  6 BYTEs    future expansion
  1773. 13Eh    WORD    structure size
  1774. SeeAlso: #1637
  1775.  
  1776. Format of FaxBIOS SCHED_ADD_FILE command buffer:
  1777. Offset    Size    Description    (Table 1637)
  1778.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1779.  0Ch    WORD    schedule handle
  1780.  0Eh    WORD    file type
  1781.         0000h unidentified
  1782.         0001h native file format
  1783.         0002h ASCII
  1784.         0003h FaxBIOS Tiff Class F
  1785.  10h 80 BYTEs    file name
  1786.  60h 80 BYTEs    font token
  1787.  B0h    WORD    conversion options bitmap
  1788.  B2h    WORD    resolution
  1789.         0000h standard 98 lines per inch, 204 dpi
  1790.         0001h fine 196 lines per inch, 204 dpi
  1791.         0002h Group4 300 dpi
  1792.         0003h Group4 400 dpi
  1793.  B4h    WORD    page length
  1794.         0000h 279 mm (11 in)
  1795.         0001h 297 mm (11.69 in)
  1796.         0002h 364 mm (14.33 in)
  1797.         0003h unlimited
  1798.  B6h    WORD    page width
  1799.         0000h 215 mm (8.46 in)
  1800.         0001h 255 mm (10.04 in)
  1801.         0002h 303 mm (11.93 in)
  1802.         0003h 151 mm (5.91 in)
  1803.         0004h 107 mm (4.21 in)
  1804.  B8h    WORD    binary file transfer specification
  1805.         0000h only as FAX
  1806.         0001h only as file (for non-faxable files)
  1807.         0002h as file when possible else FAX
  1808.  BAh    WORD    seam flag (nonzero for seam with next)
  1809.  BCh    WORD    delete flag (nonzero to delete when done)
  1810.  BEh  6 BYTEs    future expansion
  1811.  C4h    WORD    structure size
  1812. SeeAlso: #1636,#1638
  1813.  
  1814. Format of FaxBIOS SCHED_SET_PARAMS command buffer:
  1815. Offset    Size    Description    (Table 1638)
  1816.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1817.  0Ch    WORD    scheduler handle
  1818.  0Eh    DWORD    time to send
  1819.  10h 10 BYTEs    priority token
  1820.  1Ch 80 BYTEs    logo file token
  1821.  6Ch 80 BYTEs    signature file token
  1822.  BCh 80 BYTEs    cover page token
  1823. 10Ch 40 BYTEs    Subject text
  1824. 134h 40 BYTEs    From text
  1825. 15Ch    WORD    user ID
  1826. 15Eh  6 BYTEs    future expansion
  1827. 164h    WORD    structure size
  1828. SeeAlso: #1636,#1637,#1639
  1829.  
  1830. Format of FaxBIOS SCHED_CLOSE command buffer:
  1831. Offset    Size    Description    (Table 1639)
  1832.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1833.  0Ch    WORD    scheduler handle
  1834.  0Eh    WORD    envelope ID generated
  1835.  10h  6 BYTEs    future expansion
  1836.  16h    WORD    structure size
  1837. SeeAlso: #1638
  1838.  
  1839. Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  1840. Offset    Size    Description    (Table 1640)
  1841.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1842.  0Ch    WORD    log handle
  1843.  0Eh    WORD    number of entries
  1844.  10h  6 BYTEs    future expansion
  1845.  16h    WORD    structure size
  1846.  
  1847. Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
  1848. Offset    Size    Description    (Table 1641)
  1849.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1850.  0Ch 80 BYTEs    filename
  1851.  5Ch    WORD    file type
  1852.         0000h unidentified
  1853.         0001h native file format
  1854.         0002h ASCII
  1855.         0003h FaxBIOS Tiff Class F
  1856.  5Eh    WORD    bitmap of supported capabilities
  1857.  60h  6 BYTEs    future expansion
  1858.  66h    WORD    structure size
  1859. SeeAlso: #1642,#1643
  1860.  
  1861. Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
  1862. Offset    Size    Description    (Table 1642)
  1863.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1864.  0Ch 80 BYTEs    filename
  1865.  5Ch    WORD    graph handle
  1866.  5Eh  6 BYTEs    future expansion
  1867.  64h    WORD    structure size
  1868. SeeAlso: #1641,#1643,#1644
  1869.  
  1870. Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  1871. Offset    Size    Description    (Table 1643)
  1872.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1873.  0Ch    WORD    graph handle
  1874.  0Eh  6 BYTEs    future expansion
  1875.  14h    WORD    structure size
  1876. SeeAlso: #1642,#1644
  1877.  
  1878. Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
  1879. Offset    Size    Description    (Table 1644)
  1880.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1881.  0Ch    WORD    graph handle
  1882.  0Eh    WORD    resolution
  1883.  10h    WORD    page width
  1884.  12h  6 BYTEs    future expansion
  1885.  18h    WORD    structure size
  1886. SeeAlso: #1642,#1643,#1645
  1887.  
  1888. Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
  1889. Offset    Size    Description    (Table 1645)
  1890.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1891.  0Ch    WORD    graph handle
  1892.  0Eh    DWORD    pointer to storage for image
  1893.  12h    WORD    band height in lines
  1894.  14h    WORD    width of page image in bytes
  1895.  16h    WORD    facsimile page width constant
  1896.  18h    WORD    width of page image in bits
  1897.  1Ah    WORD    number of bytes actually processed
  1898.  1Ch  6 BYTEs    future expansion
  1899.  22h    WORD    structure size
  1900. SeeAlso: #1644,#1646
  1901.  
  1902. Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
  1903. Offset    Size    Description    (Table 1646)
  1904.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1905.  0Ch 80 BYTEs    filename
  1906.  5Ch    WORD    file type
  1907.  5Eh    WORD    graph handle
  1908.  60h    WORD    number of pages
  1909.  62h  6 BYTEs    future expansion
  1910.  68h    WORD    structure size
  1911. SeeAlso: #1645,#1647
  1912.  
  1913. Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
  1914. Offset    Size    Description    (Table 1647)
  1915.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1916.  0Ch    WORD    graph handle
  1917.  0Eh    WORD    page number
  1918.  10h    WORD    vertical resolution
  1919.  12h    WORD    page width
  1920.  14h    DWORD    page length
  1921.  18h  6 BYTEs    future expansion
  1922.  1Eh    WORD    structure size
  1923. SeeAlso: #1645,#1646,#1648
  1924.  
  1925. Format of FaxBIOS GRAPH_READ_PAGE command buffer:
  1926. Offset    Size    Description    (Table 1648)
  1927.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1928.  0Ch    WORD    graph handle
  1929.  0Eh    DWORD    pointer to storage for image
  1930.  12h    WORD    band height in lines
  1931.  14h    WORD    width of page image in bytes
  1932.  16h    WORD    facsimile page width constant
  1933.  18h    WORD    width of page image in bits
  1934.  1Ah    WORD    number of bytes actually processed
  1935.  1Ch  6 BYTEs    future expansion
  1936.  22h    WORD    structure size
  1937.  
  1938. Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
  1939. Offset    Size    Description    (Table 1649)
  1940.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1941.  0Ch    WORD    device number
  1942.  0Eh  6 BYTEs    future expansion
  1943.  14h    WORD    structure size
  1944. SeeAlso: #1650
  1945.  
  1946. Format of FaxBIOS IOCTL_DIAL command buffer:
  1947. Offset    Size    Description    (Table 1650)
  1948.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  1949.  0Ch    WORD    device number
  1950.  0Eh  6 BYTEs    country code
  1951.  14h  6 BYTEs    city or area code
  1952.  1Ah 14 BYTEs    local number
  1953.  28h 14 BYTEs    extension
  1954.  36h 14 BYTEs    reserved
  1955.  4Eh  6 BYTEs    future expansion
  1956.  54h    WORD    structure size
  1957. SeeAlso: #1649
  1958. --------N-2F8100-----------------------------
  1959. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  1960.     AX = 8100h
  1961. Return: AL = FFh if installed
  1962. Program: TurboNET is a NetBIOS-based file redirector and server; a
  1963.       demonstration version may be downloaded from Nanosoft's BBS
  1964. SeeAlso: AX=8000h"TurboNET"
  1965. --------N-2F8101-----------------------------
  1966. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  1967.     AX = 8101h
  1968. Return: AL = ???
  1969.     DL = ???
  1970. --------N-2F8102-----------------------------
  1971. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  1972.     AX = 8102h
  1973. Return: AL = ???
  1974.     DL = ???
  1975. --------N-2F8103-----------------------------
  1976. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  1977.     AX = 8103h
  1978.     ES:DI -> 17-byte buffer
  1979. Return: buffer filled
  1980. --------N-2F8104-----------------------------
  1981. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  1982.     AX = 8104h
  1983.     BL = ???
  1984.     BH = ???
  1985.     CX = ???
  1986.     DX = ???
  1987.     DS:SI -> 16-byte buffer containing ???
  1988. Return: AL = 00h ???
  1989. --------N-2F8105-----------------------------
  1990. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  1991.     AX = 8105h
  1992.     CX = ??? (don't change current value if 0000h)
  1993.     DX = ??? (don't change current value if 0000h)
  1994. Return: AL = 00h successful
  1995. --------s-2F8200-----------------------------
  1996. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  1997.     AX = 8200h
  1998.     DX:DI -> start of sample space
  1999.     CX:BX = length in bytes
  2000. Return: AX = status (see #1651)
  2001. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  2002. SeeAlso: AX=8201h"RESPLAY",AX=8210h
  2003.  
  2004. (Table 1651)
  2005. Values for RESPLAY status:
  2006.  1000h    successful
  2007.  2000h    not initialized (see AX=8210h)
  2008.  other    RESPLAY not installed
  2009. --------G-2F8200-----------------------------
  2010. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  2011.     AX = 8200h
  2012. Return: AL = FFh if installed
  2013. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  2014.       captured and recorded for later analysis
  2015. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  2016. SeeAlso: AX=8204h"CAPDOS"
  2017. --------s-2F8201-----------------------------
  2018. INT 2F - RESPLAY - INSTALLATION CHECK
  2019.     AX = 8201h
  2020. Return: AX = 7746h if installed
  2021. SeeAlso: AX=8202h"RESPLAY",AX=8210h
  2022. --------G-2F8201-----------------------------
  2023. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  2024.     AX = 8201h
  2025. Note:    resets queue of captured INT 21 calls
  2026. SeeAlso: AX=8200h"CAPDOS"
  2027. --------s-2F8202-----------------------------
  2028. INT 2F - RESPLAY - UNINSTALL
  2029.     AX = 8202h
  2030. Return: AX = status
  2031.         1000h successful
  2032. SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
  2033. --------G-2F8202-----------------------------
  2034. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  2035.     AX = 8202h
  2036. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  2037. --------G-2F8203-----------------------------
  2038. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  2039.     AX = 8203h
  2040. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  2041. --------G-2F8204-----------------------------
  2042. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  2043.     AX = 8204h
  2044. Return: AH = flag: queue wrapped if nonzero
  2045.     BX = index of current start of queue
  2046.     CX = size of queue in entries
  2047. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  2048. --------G-2F8205-----------------------------
  2049. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  2050.     AX = 8205h
  2051.     BX = queue item number
  2052. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  2053. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  2054. --------s-2F8210-----------------------------
  2055. INT 2F - RESPLAY - INITIALIZE
  2056.     AX = 8210h
  2057.     BL = sound device number (see #1652)
  2058.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  2059.     CL = direction
  2060.         00h playback
  2061.         01h sample
  2062. Return: AX = status (see #1651)
  2063. SeeAlso: AX=8200h"RESPLAY"
  2064.  
  2065. (Table 1652)
  2066. Values for RESPLAY sound device:
  2067.  00h    printer port LPT1
  2068.  01h    printer port LPT2
  2069.  02h    prototype board at I/O address 0300h
  2070.  03h    printer port (alternative LPT1)
  2071.  04h    internal speaker
  2072. ----------2F86-------------------------------
  2073. INT 2F U - ???
  2074.     AH = 86h
  2075.     AL = function (at least 06h and 07h)
  2076.     ???
  2077. Return: ???
  2078. Note:    called by Codeview for Windows
  2079. SeeAlso: AH=44h
  2080. --------U-2F8900-----------------------------
  2081. INT 2F - WHOA!.COM - INSTALLATION CHECK
  2082.     AX = 8900h
  2083. Return: AL = state
  2084.         00h not installed
  2085.         FFh installed
  2086. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  2087. SeeAlso: AX=8901h,AX=8902h
  2088. --------U-2F8901-----------------------------
  2089. INT 2F - WHOA!.COM - UNINSTALL
  2090.     AX = 8901h
  2091. Return: AL = status
  2092.         FDh successful
  2093.         FEh error
  2094. SeeAlso: AX=8900h
  2095. --------U-2F8902-----------------------------
  2096. INT 2F - WHOA!.COM - SET DELAY COUNT
  2097.     AX = 8902h
  2098.     BX = delay count (larger values slow system down more)
  2099. Return: AL = status
  2100.         FDh successful
  2101.         FEh error
  2102. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  2103. SeeAlso: AX=8900h
  2104. --------U-2F9000-----------------------------
  2105. INT 2F U - RAID - INSTALLATION CHECK
  2106.     AX = 9000h
  2107. Return: AL = FFh if installed
  2108. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  2109.       that resides mostly in EMS
  2110. --------U-2F9001-----------------------------
  2111. INT 2F U - RAID - GET ???
  2112.     AX = 9001h
  2113. Return: DX:AX -> ???
  2114. SeeAlso: AX=9000h
  2115. --------U-2F9002-----------------------------
  2116. INT 2F U - RAID - GET RESIDENT SEGMENT
  2117.     AX = 9002h
  2118. Return: AX = segment of resident (conventional memory) portion
  2119. SeeAlso: AX=9000h
  2120. --------U-2F9003-----------------------------
  2121. INT 2F U - RAID - UNINSTALL
  2122.     AX = 9003h
  2123. Return: ???
  2124. SeeAlso: AX=9000h
  2125. --------U-2F9004-----------------------------
  2126. INT 2F U - RAID - GET ???
  2127.     AX = 9004h
  2128. Return: AX = first available paragraph past end of resident portion???
  2129.     CX destroyed
  2130. SeeAlso: AX=9000h
  2131. --------e-2F92-------------------------------
  2132. INT 2F - Network Courier E-Mail - API
  2133.     AH = 92h
  2134.     AL = function
  2135.         00h installation check
  2136.         01h uninstall
  2137.         02h pop down MICRO.EXE notification window
  2138.         03h ???
  2139.         04h ???
  2140.         05h ???
  2141. Return: ???
  2142. Program: The Network Courier is an electronic mail package by Consumers
  2143.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  2144.       renamed Microsoft Mail v3.0.
  2145. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  2146. Index:    installation check;Network Courier E-Mail
  2147. Index:    uninstall;Network Courier E-Mail
  2148. --------R-2F9200-----------------------------
  2149. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  2150.     AX = 9200h
  2151. Program: DRIVEMAP is a redirector which allows drives on computers connected
  2152.       over the parallel or serial ports to appear as local drives
  2153. BUG:    jumps to data because jump table entry is 0000h
  2154. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  2155. --------R-2F9201-----------------------------
  2156. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  2157.     AX = 9201h
  2158.     DL = drive number (01h = A:, etc.)
  2159. Return: AL = 92h if mapped drive
  2160.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  2161. SeeAlso: AX=9204h,AX=920Bh
  2162. --------R-2F9202-----------------------------
  2163. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  2164.     AX = 9202h
  2165.     BX = caller's CS
  2166. Return: AX = status
  2167.         0000h failed
  2168.         nonzero successful
  2169. SeeAlso: AX=9204h
  2170. --------R-2F9203-----------------------------
  2171. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  2172.     AX = 9203h
  2173. Return: AH = major version
  2174.     AL = minor version
  2175.     CX = segment of resident code
  2176. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  2177. SeeAlso: AX=9204h,INT 16/AX=FF70h
  2178. --------R-2F9204-----------------------------
  2179. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  2180.     AX = 9204h
  2181. Return: AX = 9200h if installed
  2182.        BL = ???
  2183.        CX = segment of resident code
  2184. Program: DRIVEMAP is a redirector which allows drives on computers connected
  2185.       over the parallel or serial ports to appear as local drives
  2186. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  2187. --------R-2F9205-----------------------------
  2188. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  2189.     AX = 9205h
  2190.     BX = ??? to set
  2191. Return: CX = new value of ???
  2192. --------R-2F9206-----------------------------
  2193. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2194.     AX = 9206h
  2195.     ???
  2196. Return: ???
  2197. --------R-2F9207-----------------------------
  2198. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  2199.     AX = 9207h
  2200.     ???
  2201. Return: AX = ???
  2202. --------R-2F9208-----------------------------
  2203. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2204.     AX = 9208h
  2205.     ???
  2206. Return: ???
  2207. --------R-2F9209-----------------------------
  2208. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2209.     AX = 9209h
  2210.     ???
  2211. Return: AX = ???
  2212.     BX = ???
  2213.     CX = ???
  2214.     DX = ???
  2215. --------R-2F920A-----------------------------
  2216. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2217.     AX = 920Ah
  2218.     BX = ???
  2219. Return: AX = ??? or FFFBh on error
  2220. --------R-2F920B-----------------------------
  2221. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  2222.     AX = 920Bh
  2223.     BL = drive letter (41h ['A'] = A:, etc)
  2224.     CX = ??? (0000h removes mapping)
  2225. Return: AX = ??? or FFF8h on error
  2226. SeeAlso: AX=9201h,AX=920Dh
  2227. --------R-2F920C-----------------------------
  2228. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2229.     AX = 920Ch
  2230.     ???
  2231. Return: AX = ??? (0002h)
  2232.     CX = ??? (0000h)
  2233. --------R-2F920D-----------------------------
  2234. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  2235.     AX = 920Dh
  2236.     BL = drive letter (41h ['A'] = A:, etc)
  2237. Return: AX = type flags
  2238.         bit 0: ???
  2239.         bit 1: available
  2240.         bit 5: local
  2241.     BX = ???
  2242.     CX = segment of resident code (apparently an unintended side effect)
  2243. Program: DRIVEMAP is a redirector which allows drives on computers connected
  2244.       over the parallel or serial ports to appear as local drives
  2245. SeeAlso: AX=9218h,INT 16/AX=FF70h
  2246. --------R-2F920E-----------------------------
  2247. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  2248.     AX = 920Eh
  2249.     BX = port number (0-2)
  2250.     CX = ??? (0000h to unmap)
  2251. Return: ???
  2252. --------R-2F920F-----------------------------
  2253. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  2254.     AX = 920Fh
  2255.     ES:DI -> 3-byte buffer for ???
  2256. Return: CX = 0000h
  2257.     ES:DI buffer filled
  2258. --------R-2F9210-----------------------------
  2259. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2260.     AX = 9210h
  2261.     ???
  2262. Return: ???
  2263. --------R-2F9211-----------------------------
  2264. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  2265.     AX = 9211h
  2266.     ES:DI -> 8-word buffer for ???
  2267. Return: CX = 0000h
  2268.     ES:DI buffer filled
  2269. --------R-2F9212-----------------------------
  2270. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  2271.     AX = 9212h
  2272.     BX = phase
  2273.         0000h leave critical section???
  2274.         nonzero enter critical section???
  2275. --------R-2F9213-----------------------------
  2276. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2277.     AX = 9213h
  2278.     BX = function number (0000h-000Bh)
  2279.     ???
  2280. Return: ???
  2281. --------R-2F9214-----------------------------
  2282. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  2283.     AX = 9214h
  2284.     ES:DI -> 6-word buffer for ???
  2285. Return: CX = 0000h
  2286.     AX = ???
  2287.     ES:DI buffer filled
  2288. --------R-2F9215-----------------------------
  2289. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  2290.     AX = 9215h
  2291.     ES:DI -> 100-word buffer for ???
  2292. Return: CX = 0000h
  2293.     ES:DI buffer filled
  2294. --------R-2F9216-----------------------------
  2295. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2296.     AX = 9216h
  2297.     ES:DI -> ???
  2298. Return: ???
  2299. --------R-2F9217-----------------------------
  2300. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2301.     AX = 9217h
  2302.     DS:SI -> 25-word buffer containing ???
  2303. Return: ???
  2304. --------R-2F9218-----------------------------
  2305. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  2306.     AX = 9218h
  2307.     BX = port number???
  2308. Return: AX = ???
  2309.     BX = ??? (0000h)
  2310.     CX = ??? (0000h)
  2311. Program: DRIVEMAP is a redirector which allows drives on computers connected
  2312.       over the parallel or serial ports to appear as local drives
  2313. --------R-2F9219-----------------------------
  2314. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2315.     AX = 9219h
  2316.     ???
  2317. Return: ???
  2318. --------R-2F921A-----------------------------
  2319. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2320.     AX = 921Ah
  2321.     ???
  2322. Return: AH = ???
  2323.     AL = ???
  2324.     BX = ???
  2325. --------R-2F921B-----------------------------
  2326. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2327.     AX = 921Bh
  2328.     ???
  2329. Return: AX = ???
  2330.     CX = segment of resident code (apparently an unintended side effect)
  2331. --------R-2F921C-----------------------------
  2332. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2333.     AX = 921Ch
  2334.     ???
  2335. Return: ???
  2336. --------R-2F921D-----------------------------
  2337. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  2338.     AX = 921Dh
  2339. Return: AX = ???
  2340. --------R-2F921E-----------------------------
  2341. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  2342.     AX = 921Eh
  2343.     ???
  2344. Return: ???
  2345. Program: DRIVEMAP is a redirector which allows drives on computers connected
  2346.       over the parallel or serial ports to appear as local drives
  2347. Note:    this function sets two variables to 24h each
  2348. SeeAlso: INT 16/AX=FF70h
  2349. --------V-2F93-------------------------------
  2350. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  2351.     AH = 93h
  2352.     BX = CX = AX
  2353. Return: AL = state
  2354.         FFh if installed and BX=CX=AX on entry
  2355.         BX = segment of resident code
  2356.         01h if installed but BX or CX differ from AX (multiplex number not
  2357.           available)
  2358. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  2359. SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
  2360. Index:    screen saver;InnerMission
  2361. --------e-2F9400-----------------------------
  2362. INT 2F - MICRO.EXE - INSTALLATION CHECK
  2363.     AX = 9400h
  2364. Return: AL = 07h or 08h if installed
  2365. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  2366. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  2367. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  2368. --------e-2F9401-----------------------------
  2369. INT 2F - MICRO.EXE - SET ??? FLAG
  2370.     AX = 9401h
  2371. SeeAlso: AX=9400h,AX=9403h
  2372. --------e-2F9402-----------------------------
  2373. INT 2F - MICRO.EXE - ???
  2374.     AX = 9402h
  2375.     ???
  2376. Return: ???
  2377. SeeAlso: AX=9400h
  2378. --------e-2F9403-----------------------------
  2379. INT 2F - MICRO.EXE - SET ??? FLAG
  2380.     AX = 9403h
  2381. SeeAlso: AX=9400h,AX=9404h
  2382. --------e-2F9404-----------------------------
  2383. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  2384.     AX = 9404h
  2385.     ES:DI -> name of executable from which MICRO.EXE was started
  2386. Note:    if the specified name is identical to the name of the program file
  2387.       from which MICRO was started, the ??? flag is cleared; otherwise,
  2388.       it is left unchanged
  2389. SeeAlso: AX=9400h,AX=9403h
  2390. --------V-2F96C7-----------------------------
  2391. INT 2F U - STRETCH - INSTALLATION CHECK
  2392.     AX = 96C7h
  2393. Return: AX = AAAAh if installed
  2394. Program: stretch.exe is a TSR for Toshiba Laptops to avoid blank screen areas
  2395.       in VGA text modes by increasing inter-line spacing
  2396. --------e-2F9C-------------------------------
  2397. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  2398.     AH = 9Ch
  2399.     AL = subfunction
  2400.         01h uninstall
  2401. Return: ???
  2402. Program: The Network Courier is an electronic mail package by Consumers
  2403.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  2404.       renamed Microsoft Mail v3.0.
  2405. SeeAlso: AH=92h
  2406. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  2407. --------G-2F9E00-----------------------------
  2408. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  2409.     AX = 9E00h
  2410. Return: AX = FFFFh if installed
  2411.         BX = segment of resident code
  2412. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  2413.       and higher machines by Celso Minnitti, Jr.
  2414. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  2415. --------G-2F9E01-----------------------------
  2416. INT 2F U - INTMON v2.1 - RESET
  2417.     AX = 9E01h
  2418. Return: ???
  2419. Desc:    this function specifies that INTMON should assume that any interrupts
  2420.       on which it is currently awaiting a return have completed (i.e.
  2421.       interrupts which never return such as INT 20 and INT 27)
  2422. SeeAlso: AX=9E00h,AX=9E03h
  2423. --------G-2F9E02-----------------------------
  2424. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  2425.     AX = 9E02h
  2426. Return: ???
  2427. SeeAlso: AX=9E00h
  2428. --------G-2F9E03-----------------------------
  2429. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  2430.     AX = 9E03h
  2431.     BH = interrupt number???
  2432. Return: ???
  2433. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  2434. SeeAlso: AX=9E00h,AX=9E01h
  2435. --------G-2F9F00-----------------------------
  2436. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  2437.     AX = 9F00h
  2438. Return: AX = FFFFh if installed
  2439. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  2440.       Minnitti, Jr.
  2441. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  2442. --------G-2F9F01-----------------------------
  2443. INT 2F U - INTCFG v2.1 - ???
  2444.     AX = 9F01h
  2445.     ???
  2446. Return: ???
  2447. SeeAlso: AX=9F00h
  2448. --------G-2F9F30-----------------------------
  2449. INT 2F U - INTCFG v2.1 - GET ???
  2450.     AX = 9F30h
  2451. Return: AX = ??? (0002h)
  2452. SeeAlso: AX=9F00h
  2453. --------G-2F9F49-----------------------------
  2454. INT 2F U - INTCFG v2.1 - UNINSTALL
  2455.     AX = 9F49h
  2456. Return: AX,DX,DS,ES destroyed
  2457. SeeAlso: AX=9F00h
  2458. --------E-2FA1--BX0081-----------------------
  2459. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  2460.     AH = A1h
  2461.     BX = 0081h
  2462.     AL = which
  2463.         FEh OS/286,OS/386
  2464.         FFh HummingBoard DOS extender
  2465.     ES:DI -> 16-byte buffer
  2466. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  2467. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  2468.       BX=0082h and BX=0084h are present and function identically to the
  2469.       AX=FBA1h/BX=008xh calls
  2470. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  2471. --------m-2FA189-----------------------------
  2472. INT 2F U - Biologic HRAMDEV.SYS - API
  2473.     AX = A189h
  2474.     BX = subfunction
  2475.         0000h set ???
  2476.         0001h remove ???
  2477.         0002h get status ???
  2478.         0003h enable ???
  2479.         0004h disable ???
  2480.         0005h set ??? flag
  2481.         0006h clear ??? flag
  2482.         0007h set ??? flag
  2483.         0008h clear ??? flag
  2484.         0009h set ???
  2485.     ES:DI -> function-specific arguments
  2486.         if func 0000h: 20-byte buffer containing ???
  2487.         if func 0001h: 20-byte buffer for returned ???
  2488.         if func 0002h: 16-byte buffer for returned ???
  2489.         if func 0009h: WORD containing ???
  2490. Return: BX = A189h if installed
  2491.     AH = status
  2492.         00h successful
  2493.         FFh failed or invalid function number
  2494. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  2495.       provides improved high memory access under MS-DOS 5.0
  2496. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  2497.       removes the values stored with the most recent function 00h call
  2498.       which has not yet been matched with a function 01h call.
  2499. --------U-2FA4E0-----------------------------
  2500. INT 2F - Futurus Team - INSTALLATION CHECK
  2501.     AX = A4E0h
  2502. Return: AL = 52h ("R") if installed
  2503.         AH = major version plus 30h ("0")
  2504.         ES:BX -> ??? (INT A4 handler???)
  2505. Note:    older versions of Right Hand Man (from which Team evolved) store the
  2506.       signature "RH" at offset 103h in the INT 2F handler's segment
  2507. SeeAlso: INT A4"Right Hand Man"
  2508. --------U-2FA900-----------------------------
  2509. INT 2F - METZTSR.COM - INSTALLATION CHECK
  2510.     AX = A900h
  2511.     CF set
  2512. Return: CF clear if resident
  2513.         AX = 97FFh
  2514.     CF set if not present
  2515. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  2516.       saver) inactivity timeout while running a DOSapp under MS Windows.
  2517.     the default multiplex number is A9h, but may be set to any value from
  2518.       80h to FFh with a commandline switch
  2519. SeeAlso: AX=A901h,AX=A902h
  2520. --------U-2FA901-----------------------------
  2521. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  2522.     AX = A901h
  2523.     CF set
  2524. Return: CF clear if successful
  2525.         AX:DX = BIOS time at which INT 09 was last invoked
  2526.     CF set if not present
  2527. SeeAlso: INT 09,INT 1A/AH=00h
  2528. --------U-2FA902-----------------------------
  2529. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  2530.     AX = A902h
  2531.     BL = new value
  2532.         00h Ctrl-Alt-Del not allowed
  2533.         else Ctrl-Alt-Del allowed (startup default is 01h)
  2534.     CF set
  2535. Return: CF clear if successful
  2536.         AX = 97FFh
  2537.     CF set if not resident
  2538. SeeAlso: AX=A903h
  2539. --------U-2FA903-----------------------------
  2540. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  2541.     AX = A903h
  2542.     CF set
  2543. Return: CF clear if successful
  2544.         AX = 97FFh if Ctrl-Alt-Del allowed
  2545.         AX = 0000h if Ctrl-Alt-Del not allowed
  2546.     CF set if not resident
  2547. SeeAlso: AX=A902h
  2548. --------U-2FAA00-----------------------------
  2549. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  2550.     AX = AA00h
  2551. Return: AL = 00h not installed
  2552.          FFh installed
  2553. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  2554. --------f-2FAB00-----------------------------
  2555. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  2556.     AX = AB00h
  2557. Return: AL = 4Dh if installed
  2558. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  2559. --------f-2FAB01-----------------------------
  2560. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  2561.     AX = AB01h
  2562.     BX = process ID
  2563.     DS:DX -> 38-byte parameter record (see #2425 at INT 7B"Btrieve")
  2564. Return: AL = status
  2565.         00h OK
  2566.         other retry after calling INT 7F/AX=0200h
  2567. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  2568. --------f-2FAB02-----------------------------
  2569. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  2570.     AX = AB02h
  2571. Return: AL = 00h successful
  2572.         BX = process ID
  2573.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  2574. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  2575. --------V-2FAC00-----------------------------
  2576. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  2577.     AX = AC00h
  2578. Return: AX = FFFFh
  2579.     ES:DI -> ??? (graphics data?) (not documented)
  2580. Note:    this installation check was moved here to avoid the conflict with the
  2581.       CD-ROM extensions that occurred in DOS 4.00
  2582. SeeAlso: AX=1500h"GRAPHICS"
  2583. --------V-2FAC00DI1092-----------------------
  2584. INT 2F - QRIP/TSR - GIVE CPU TO QRIP
  2585.     AX = AC00h
  2586.     DI = 1092h
  2587. Return: nothing
  2588. Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
  2589.       Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
  2590.       provide a graphical user interface
  2591. Desc:    give QRIP some CPU time to update music and flashing timers
  2592. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2593.     this function should be called regularly whenever the terminal program
  2594.       is otherwise idle; the updates are automatically performed on any
  2595.       other QRIP call
  2596. SeeAlso: AX=AC01h,AX=ACF0h
  2597. --------V-2FAC01DI1092-----------------------
  2598. INT 2F - QRIP/TSR - CHANGE INTERNAL FLAGS
  2599.     AX = AC01h
  2600.     DI = 1092h
  2601.     BX = flags to be turned on (see #1653)
  2602.     CX = flags to be turned off (see #1653)
  2603. Return: AX = 9142h if installed
  2604.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  2605.         ---if DX nonzero---
  2606.         BX = QRIP version number in hex (BH = major, BL = minor)
  2607.         CX = new flags (see #1653)
  2608. Note:    if DI <> 1092h on entry, QRIP chains the call
  2609. SeeAlso: AX=AC00h/DI=1092h,AX=ACF0h
  2610.  
  2611. Bitfields for QRIP internal flags:
  2612. Bit(s)    Description    (Table 1653)
  2613.  0    ANSI emulation enabled (default on)
  2614.  1    RIP emulation enabled (default on)
  2615.  2    graphical commands allowed (default on)
  2616.  3    TTY text allowed (default on)
  2617.  4    disable @ variables (default off in TSR mode)
  2618.  5    wait for key on RIP "end scene" command (default off)
  2619.  6    anti-stripping (default off in TSR mode)
  2620.  7    sound enabled (default on)
  2621.  8    automatic message filter (default off in TSR mode)
  2622.  9    display-only mode (no user prompts)
  2623.  10    TTY text suppression (default off in TSR mode)
  2624.  11-15    reserved
  2625. --------V-2FAC02DI1092-----------------------
  2626. INT 2F - QRIP/TSR - TURN OFF GRAPHICS SCREEN
  2627.     AX = AC02h
  2628.     DI = 1092h
  2629. Return: nothing
  2630. Note:    if DI <> 1092h on entry, QRIP chains the call
  2631. SeeAlso: AX=AC03h,AX=ACF0h
  2632. --------V-2FAC03DI1092-----------------------
  2633. INT 2F - QRIP/TSR - TURN ON GRAPHICS SCREEN
  2634.     AX = AC03h
  2635.     DI = 1092h
  2636. Return: nothing
  2637. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2638.     this function does not restore the contents of the screen (see AX=AC15h)
  2639. SeeAlso: AX=AC02h,AX=AC14h,AX=AC15h
  2640. --------V-2FAC04DI1092-----------------------
  2641. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  2642.     AX = AC04h
  2643.     DI = 1092h
  2644.     DX:BX -> string
  2645.     CX = length of string
  2646. Return: nothing
  2647. Note:    if DI <> 1092h on entry, QRIP chains the call
  2648. SeeAlso: AX=AC05h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  2649. --------V-2FAC05DI1092-----------------------
  2650. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  2651.     AX = AC05h
  2652.     DI = 1092h
  2653.     DX:BX -> ASCIZ string
  2654. Return: nothing
  2655. Note:    if DI <> 1092h on entry, QRIP chains the call
  2656. SeeAlso: AX=AC04h,AX=AC06h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  2657. --------V-2FAC06DI1092-----------------------
  2658. INT 2F - QRIP/TSR - RECEIVE CHARACTERS FROM QRIP
  2659.     AX = AC06h
  2660.     DI = 1092h
  2661. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #1654)
  2662.     BX = string-waiting flag
  2663.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  2664.     CX = DX = AX
  2665. Note:    if DI <> 1092h on entry, QRIP chains the call
  2666. SeeAlso: AX=AC04h,AX=AC05h,AX=AC0Ch,AX=AC16h,AX=AC18h,AX=AC1Ah
  2667.  
  2668. (Table 1654)
  2669. Values for QRIP special codes:
  2670.  0000h    if none
  2671.  0100h    wait for user keypress (must call AX=AC16h/BL=00h or AX=AC18h)
  2672.  0101h    both/middle mouse button pressed
  2673.  0102h    entering block mode (up/download) (call AX=AC1Ah)
  2674.  0103h    right mouse button pressed
  2675.  0104h    BBS requested status bar on
  2676.  0105h    BBS requested status bar off
  2677.  0106h    BBS requested VT-102 terminal emulation
  2678.     (keypad keys should send VT-102 escape codes)
  2679.  0107h    BBS requested VT-102 mode off
  2680.  0108h    BBS requested doorway mode (raw IBM keyboard ASCII/scan code pairs)
  2681.  0109h    BBS requested doorway mode off
  2682.  010Ah    hotkey mode on
  2683.  010Bh    hotkey mode off
  2684.  010Ch    BBS requested Tab-key button changing on
  2685.  010Dh    BBS requested Tab-key mode off
  2686.  010Eh    XOFF (use flow control to stop incoming characters)
  2687.  010Fh    XON (use flow control to resume incoming characters)
  2688.  0110h-0119h BBS requested application (0-9) be run
  2689.     application 0 should be a standard text editor
  2690.  01FFh    send ASCII 00h to BBS 
  2691. Note:    for special codes 0104h to 010Dh, the terminal program should report
  2692.       any mode changes it make in response by calling AX=AC16h
  2693. --------V-2FAC07DI1092-----------------------
  2694. INT 2F - QRIP/TSR - GET FONT DIRECTORY
  2695.     AX = AC07h
  2696.     DI = 1092h
  2697. Return: DX:BX -> 80-byte internal buffer containing ASCIZ font directory name
  2698. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2699.     the application may change the font directory by overwriting the
  2700.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL
  2701.     if changed, the new path will not become effective until the graphics
  2702.       screen is reinitialized
  2703. SeeAlso: AX=AC08h,AX=ACF0h
  2704. --------V-2FAC08DI1092-----------------------
  2705. INT 2F - QRIP/TSR - GET ICON DIRECTORY
  2706.     AX = AC08h
  2707.     DI = 1092h
  2708. Return: DX:BX -> 80-byte internal buffer containing ASCIZ icon directory name
  2709. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2710.     the application may change the icon directory by overwriting the
  2711.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL,
  2712.       and includes a trailing backslash
  2713.     if changed, the new path becomes effective immediately
  2714. SeeAlso: AX=AC07h,AX=ACF0h
  2715. --------V-2FAC09DI1092-----------------------
  2716. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  2717.     AX = AC09h
  2718.     DI = 1092h
  2719.     DX:BX -> string
  2720.     CX = length of string
  2721. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #1654)
  2722.     BX = string-waiting flag
  2723.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  2724.     CX = DX = AX
  2725. Note:    if DI <> 1092h on entry, QRIP chains the call
  2726. SeeAlso: AX=AC04h,AX=AC06h,AX=AC0Ah,AX=ACF0h
  2727. --------V-2FAC0ADI1092-----------------------
  2728. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  2729.     AX = AC0Ah
  2730.     DI = 1092h
  2731.     DX:BX -> ASCIZ string
  2732. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #1654)
  2733.     BX = string-waiting flag
  2734.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  2735.     CX = DX = AX
  2736. Note:    if DI <> 1092h on entry, QRIP chains the call
  2737. SeeAlso: AX=AC05h,AX=AC06h,AX=AC09h,AX=ACF0h
  2738. --------V-2FAC0BDI1092-----------------------
  2739. INT 2F - QRIP/TSR - EXECUTE RIP "END SCENE" COMMAND
  2740.     AX = AC0Bh
  2741.     DI = 1092h
  2742. Return: nothing
  2743. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2744.     enables all mouse buttons and cancels the RIP timeout
  2745. SeeAlso: AX=AC01h,AX=AC04h,AX=ACF0h
  2746. --------V-2FAC0CDI1092-----------------------
  2747. INT 2F - QRIP/TSR - GET STRING TO BE SENT TO BBS
  2748.     AX = AC0Ch
  2749.     DI = 1092h
  2750. Return: AX = status
  2751.         0000h nothing to be sent
  2752.         0001h a string is waiting to be sent
  2753.         DX:BX -> string to be sent (may contain NULs)
  2754.         CX = length of string
  2755.         0002h special code waiting (call AX=AC06h)
  2756. Note:    if DI <> 1092h on entry, QRIP chains the call
  2757. SeeAlso: AX=AC06h,AX=ACF0h
  2758. --------V-2FAC0DDI1092-----------------------
  2759. INT 2F - QRIP/TSR - SET PROTECTED SCREEN AREA
  2760.     AX = AC0Dh
  2761.     DI = 1092h
  2762.     CL = number of text lines at bottom of screen to protect (00h = off)
  2763.     BL = attribute with which to fill area (bit 7 = high-int. background)
  2764. Return: nothing
  2765. Note:    if DI <> 1092h on entry, QRIP chains the call
  2766. SeeAlso: AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  2767. --------V-2FAC0EDI1092-----------------------
  2768. INT 2F - QRIP/TSR - WRITE ASCIZ STRING IN PROTECTED AREA
  2769.     AX = AC0Eh
  2770.     DI = 1092h
  2771.     DX:BX -> ASCIZ string to be written
  2772.     CL = column at which to begin writing
  2773.     CH = row number within protected area (00h = first line)
  2774. Return: nothing
  2775. Note:    if DI <> 1092h on entry, QRIP chains the call
  2776. SeeAlso: AX=AC0Dh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  2777. --------V-2FAC0FDI1092-----------------------
  2778. INT 2F - QRIP/TSR - SCROLL PROTECTED AREA
  2779.     AX = AC0Fh
  2780.     DI = 1092h
  2781.     BH,BL = row,column of upper-left corner in protected area
  2782.     DH,DL = row,column of lower-right corner
  2783.     CL = number of lines to scroll up
  2784. Return: nothing
  2785. Note:    if DI <> 1092h on entry, QRIP chains the call
  2786. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC10h,AX=ACF0h
  2787. --------V-2FAC10DI1092-----------------------
  2788. INT 2F - QRIP/TSR - SET OUTPUT COLOR FOR PROTECTED AREA
  2789.     AX = AC10h
  2790.     DI = 1092h
  2791.     BL = new attribute (bit 7 set for high-intensity background)
  2792. Return: nothing
  2793. Note:    if DI <> 1092h on entry, QRIP chains the call
  2794. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC11h,AX=ACF0h
  2795. --------V-2FAC11DI1092-----------------------
  2796. INT 2F - QRIP/TSR - CONVERT PROTECTED AREA TO ENTIRE SCREEN
  2797.     AX = AC11h
  2798.     DI = 1092h
  2799.     BX = mode (0000h = normal protect, 0001h = allow full-screen access)
  2800. Note:    if DI <> 1092h on entry, QRIP chains the call
  2801. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=AC12h,AX=ACF0h
  2802. --------V-2FAC12DI1092-----------------------
  2803. INT 2F - QRIP/TSR - BEGIN POPUP-WINDOW MODE
  2804.     AX = AC12h
  2805.     DI = 1092h
  2806. Return: nothing
  2807. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2808.     while popup-mode is in effect, the terminal program can write to the
  2809.       screen (and easily restore it) by outputting a RIP file with AX=AC04h
  2810.       or AX=AC05h
  2811.     QRIP will automatically drop out of popup-window mode if the terminal
  2812.       program invokes RIP pick-lists
  2813.     any changes to the protected area will be restored when popup-window
  2814.       mode is cancelled
  2815. SeeAlso: AX=AC04h,AX=AC11h,AX=AC13h,AX=ACF0h
  2816. --------V-2FAC13DI1092-----------------------
  2817. INT 2F - QRIP/TSR - END POPUP-WINDOW MODE
  2818.     AX = AC13h
  2819.     DI = 1092h
  2820. Return: nothing
  2821. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2822.     restores screen
  2823. SeeAlso: AX=AC12h,AX=ACF0h
  2824. --------V-2FAC14DI1092-----------------------
  2825. INT 2F - QRIP/TSR - SAVE GRAPHICS SCREEN AND SWITCH TO TEXT MODE
  2826.     AX = AC14h
  2827.     DI = 1092h
  2828. Return: nothing
  2829. Note:    if DI <> 1092h on entry, QRIP chains the call
  2830. SeeAlso: AX=AC03h,AX=AC15h
  2831. --------V-2FAC15DI1092-----------------------
  2832. INT 2F - QRIP/TSR - RESTORE GRAPHICS SCREEN
  2833.     AX = AC15h
  2834.     DI = 1092h
  2835. Return: nothing
  2836. Desc:    restores the graphics screen saved by the last call to AX=AC14h
  2837. Note:    if DI <> 1092h on entry, QRIP chains the call
  2838. SeeAlso: AX=AC03h,AX=AC14h
  2839. --------V-2FAC16DI1092-----------------------
  2840. INT 2F - QRIP/TSR - REPORT MODE CHANGE TO QRIP
  2841.     AX = AC16h
  2842.     DI = 1092h
  2843.     BL = new mode
  2844.         00h terminate key wait
  2845.         01h status bar on
  2846.         02h status bar off
  2847.         03h VT-102 mode on
  2848.         04h VT-102 mode off
  2849.         05h doorway mode on
  2850.         06h doorway mode off
  2851.         07h hotkeys mode on
  2852.         08h hotkeys mode off
  2853.         09h tabkey mode on
  2854.         0Ah tabkey mode off
  2855. Return: nothing
  2856. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2857.     all modes default to OFF when QRIP is first installed
  2858. --------V-2FAC17DI1092-----------------------
  2859. INT 2F - QRIP/TSR - CALL (EXECUTE) A RIP FILE
  2860.     AX = AC17h
  2861.     DI = 1092h
  2862.     DX:BX -> ASCIZ filename for RIP file to be executed
  2863. Return: nothing
  2864. Notes:    if DI <> 1092h on entry, QRIP chains the call
  2865.     the specified file may be in the current icon directory, the QRIP
  2866.       startup directory, or the current directory; any pathnames specified
  2867.       with the filename are ignored
  2868. --------V-2FAC18DI1092-----------------------
  2869. INT 2F - QRIP/TSR - SEND USER KEY TO QRIP
  2870.     AX = AC18h
  2871.     DI = 1092h
  2872.     BX = key (00xxh is normal ASCII, xx00h is an extended key)
  2873. Return: nothing
  2874. Note:    if DI <> 1092h on entry, QRIP chains the call
  2875. SeeAlso: AX=AC06h,AX=ACF0h
  2876. --------V-2FAC19DI1092-----------------------
  2877. INT 2F - QRIP/TSR - HANGUP
  2878.     AX = AC19h
  2879.     DI = 1092h
  2880. Return: nothing
  2881. Desc:    inform QRIP that carrier has been lost
  2882. Note:    if DI <> 1092h on entry, QRIP chains the call
  2883. SeeAlso: AX=ACF0h
  2884. --------V-2FAC1ADI1092-----------------------
  2885. INT 2F - QRIP/TSR - GET RIP_ENTER_BLOCK_MODE INFORMATION
  2886.     AX = AC1Ah
  2887.     DI = 1092h
  2888. Return: AH = requested protocol (see #1655)
  2889.     AL = file type (see #1656)
  2890.     DX:BX -> ASCIZ filename or 0000h:0000h
  2891.     CX = length of filename
  2892. Note:    if DI <> 1092h on entry, QRIP chains the call
  2893. SeeAlso: AX=ACF0h
  2894.  
  2895. (Table 1655)
  2896. Values for QRIP protocol identifier:
  2897.  00h    Xmodem (checksum)
  2898.  01h    Xmodem-CRC
  2899.  02h    Xmodem-1K
  2900.  03h    Xmodem-1K-G
  2901.  04h    Kermit
  2902.  05h    Ymodem
  2903.  06h    Ymodem-G
  2904.  07h    Zmodem with crash recovery
  2905.  08h-0Fh same as 00h-07h, but for uploading instead of downloading
  2906. SeeAlso: #1656
  2907.  
  2908. (Table 1656)
  2909. Values for QRIP file type:
  2910.  00h    RIP file sequence to be displayed
  2911.  01h    RIP file sequence to be stored in icon directory
  2912.  02h    ICN file sequence to be stored in icon directory
  2913.  03h    HLP file sequence to be stored, then auto-loaded if needed
  2914.  04h    COMPOSITE DYNAMIC file sequence (batch protocols only)
  2915.  05h    ACTIVE DYNAMIC file sequence (batch protocols only)
  2916. Note:    for file types 04h and 05h, any .RIP or .ICN files are stored in
  2917.       the icon directory; in mode 05h, any .RIP files are also played
  2918.       back as they are received
  2919. SeeAlso: #1655
  2920. --------V-2FAC1BDI1092-----------------------
  2921. INT 2F - QRIP/TSR - SET SYSTEM FONT SIZE
  2922.     AX = AC1Bh
  2923.     DI = 1092h
  2924.     BX = font size (see #1657)
  2925. Return: nothing
  2926. Note:    if DI <> 1092h on entry, QRIP chains the call
  2927. SeeAlso: AX=AC04h,AX=ACF0h
  2928.  
  2929. (Table 1657)
  2930. Values for QRIP font size specifier:
  2931.  00h    8x8 font, 80x43 screen
  2932.  01h    7x8 font, 90x43 screen
  2933.  02h    8x14 font, 80x25 screen
  2934.  03h    7x14 font, 90x25 screen
  2935.  04h    16x14 font, 40x25 screen
  2936. --------V-2FACF0DI1092-----------------------
  2937. INT 2F - QRIP/TSR - INSTALLATION CHECK
  2938.     AX = ACF0h
  2939.     DI = 1092h
  2940. Return: AX = 9142h if installed
  2941.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  2942.         ---if DX nonzero---
  2943.         BX = QRIP version number in hex (BH = major, BL = minor)
  2944.         CX = current flags (see AX=AC01h)
  2945. Note:    if DI <> 1092h on entry, QRIP chains the call
  2946. SeeAlso: AX=AC00h/DI=1092h,AX=AC01h,AX=AC04h,AX=AC06h,AX=AC1Ah,AX=ACFFh
  2947. --------V-2FACFFDI1092-----------------------
  2948. INT 2F - QRIP/TSR - UNINSTALL
  2949.     AX = ACFFh
  2950.     DI = 1092h
  2951. Return: AX = status
  2952.         0000h unable to remove (interrupt vector hooked by another prog)
  2953.         0001h successful
  2954.         0002h unable to take over DOS at this time (retry uninstall)
  2955. Note:    if DI <> 1092h on entry, QRIP chains the call
  2956. SeeAlso: AX=ACF0h
  2957. --------V-2FAD00-----------------------------
  2958. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  2959.     AX = AD00h
  2960. Return: AL = FFh if installed
  2961.         BX = ??? (0100h for MS-DOS 3.3+)
  2962. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  2963.       subfunctions listed here
  2964. --------O-2FAD00-----------------------------
  2965. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  2966.     AX = AD00h
  2967. Return: AX = FFFFh if installed
  2968. SeeAlso: AX=AD80h
  2969. --------V-2FAD01-----------------------------
  2970. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  2971.     AX = AD01h
  2972.     BX = new code page
  2973. Return: CF clear if successful
  2974.         AX = 0001h
  2975.     CF set on error (unsupported code page)
  2976.         AX = 0000h
  2977. SeeAlso: AX=AD02h
  2978. --------O-2FAD01-----------------------------
  2979. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  2980.     AX = AD01h
  2981. Return: BX = current code page
  2982.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  2983.     ES = resident code segment
  2984. SeeAlso: AX=AD83h
  2985. --------V-2FAD02-----------------------------
  2986. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  2987.     AX = AD02h
  2988. Return: CF set if code page never set
  2989.         AX = 0001h
  2990.         BX = FFFFh (assume first hardware code page)
  2991.     CF clear if successful
  2992.         BX = current code page
  2993. SeeAlso: AX=AD01h,AX=AD03h
  2994. --------V-2FAD03-----------------------------
  2995. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  2996.     AX = AD03h
  2997.     ES:DI -> buffer for code page information (see #1658)
  2998.     CX = size of buffer in bytes
  2999. Return: CF set if buffer too small
  3000.     CF clear if successful
  3001.         ES:DI buffer filled
  3002. SeeAlso: AX=AD01h,AX=AD02h
  3003.  
  3004. Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
  3005. Offset    Size    Description    (Table 1658)
  3006.  00h    WORD    number of software code pages
  3007.  02h    WORD    ??? (0003h)
  3008.  04h    WORD    number of hardware code pages
  3009.  06h  N WORDs    hardware code page numbers
  3010.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  3011. --------V-2FAD04-----------------------------
  3012. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  3013.     AX = AD04h
  3014.     ???
  3015. Return: ???
  3016. --------V-2FAD10-----------------------------
  3017. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  3018.     AX = AD10h
  3019.     ???
  3020. Return: AX = FFFFh
  3021.     BX = ??? (0100h in PC-DOS 4.01)
  3022. --------V-2FAD10-----------------------------
  3023. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  3024.     AX = AD10h
  3025.     ???
  3026. Return: CF clear if successful
  3027.     CF set on error
  3028. Note:    this function is a NOP if the active code page has never been set
  3029.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  3030. --------V-2FAD40-----------------------------
  3031. INT 2F - DOS 4+ - ???
  3032.     AX = AD40h
  3033.     DX = ???
  3034.     ???
  3035. Return: ???
  3036. Note:    called by PC-DOS 4.01 PRINT.COM
  3037. --------K-2FAD80-----------------------------
  3038. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  3039.     AX = AD80h
  3040. Return: AL = FFh if installed
  3041.         BX = version number (BH = major, BL = minor)
  3042.         ES:DI -> internal data (see #1659)
  3043. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  3044.     this function was undocumented prior to the release of DOS 5.0
  3045.  
  3046. Format of KEYB internal data:
  3047. Offset    Size    Description    (Table 1659)
  3048.  00h    DWORD    original INT 09
  3049.  04h    DWORD    original INT 2F
  3050.  08h  6 BYTEs    ???
  3051.  0Eh    WORD    flags
  3052.  10h    BYTE    ???
  3053.  11h    BYTE    ???
  3054.  12h  4 BYTEs    ???
  3055.  16h  2 BYTEs    country ID letters
  3056.  18h    WORD    current code page
  3057. ---DOS 3.3---
  3058.  1Ah    WORD    pointer to first item in list of code page tables???
  3059.  1Ch    WORD    pointer to ??? item in list of code page tables
  3060.  1Eh  2 BYTEs    ???
  3061.  20h    WORD    pointer to key translation data (see #1661)
  3062.  22h    WORD    pointer to last item in code page table list (see #1660)
  3063.  24h  9 BYTEs    ???
  3064. ---DOS 4.01---
  3065.  1Ah  2 BYTEs    ???
  3066.  1Ch    WORD    pointer to first item in list of code page tables???
  3067.  1Eh    WORD    pointer to ??? item in list of code page tables
  3068.  20h  2 BYTEs    ???
  3069.  22h    WORD    pointer to key translation data (see #1661)
  3070.  24h    WORD    pointer to last item in code page table list (see #1660)
  3071.  26h  9 BYTEs    ???
  3072.  
  3073. Format of code page table list entries:
  3074. Offset    Size    Description    (Table 1660)
  3075.  00h    WORD    pointer to next item, FFFFh = last
  3076.  02h    WORD    code page
  3077.  04h  2 BYTEs    ???
  3078.  
  3079. Format of KEYB translation data:
  3080. Offset    Size    Description    (Table 1661)
  3081.  00h    WORD    size of data in bytes, including this word
  3082.  02h N-2 BYTEs    ???
  3083. --------K-2FAD81-----------------------------
  3084. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  3085.     AX = AD81h
  3086.     BX = code page (see #0962 at INT 21/AX=6601h)
  3087. Return: CF set on error
  3088.         AX = 0001h (code page not available)
  3089.     CF clear if successful
  3090. Notes:    called by DISPLAY.SYS
  3091.     this function was undocumented prior to the release of DOS 5.0
  3092. SeeAlso: AX=AD82h
  3093. --------K-2FAD82-----------------------------
  3094. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  3095.     AX = AD82h
  3096.     BL = new state
  3097.         00h US keyboard (Control-Alt-F1)
  3098.         FFh foreign keyboard (Control-Alt-F2)
  3099. Return: CF set on error (BL not 00h or FFh)
  3100.     CF clear if successful
  3101. Note:    this function was undocumented prior to the release of DOS 5.0
  3102. SeeAlso: AX=AD81h,AX=AD83h
  3103. --------K-2FAD83-----------------------------
  3104. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  3105.     AX = AD83h
  3106. Return: BL = current state
  3107.         00h US keyboard
  3108.         FFh foreign keyboard
  3109. SeeAlso: AX=AD82h
  3110. --------l-2FAE00-----------------------------
  3111. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  3112.     AX = AE00h
  3113.     DX = magic value FFFFh
  3114.     CH = FFh
  3115.     CL = length of command line tail (4DOS v4.0)
  3116.     DS:BX -> command line buffer (see #1662)
  3117.     DS:SI -> command name buffer (see #1663)
  3118.     DI = 0000h (4DOS v4.0)
  3119. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  3120.     AL = 00h if the command should be executed as usual
  3121. Notes:    This call provides a mechanism for TSRs to install permanent
  3122.       extensions to the command repertoire of COMMAND.COM.    It appears
  3123.       that COMMAND.COM makes this call before executing the current
  3124.       command line, and does not execute it itself if the return is FFh.
  3125.     APPEND hooks this call, to allow subsequent APPEND commands to
  3126.       execute without re-running APPEND
  3127. SeeAlso: AX=AE01h
  3128.  
  3129. Format of COMMAND.COM command line buffer:
  3130. Offset    Size    Description    (Table 1662)
  3131.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  3132.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  3133.       N BYTEs    command line text, terminated by 0Dh
  3134.  
  3135. Format of command name buffer:
  3136. Offset    Size    Description    (Table 1663)
  3137.  00h    BYTE    length of command name
  3138.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  3139. --------l-2FAE01-----------------------------
  3140. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  3141.     AX = AE01h
  3142.     DX = magic value FFFFh
  3143.     CH = 00h
  3144.     CL = length of command name (4DOS v4.0)
  3145.     DS:BX -> command line buffer (see #1662)
  3146.     DS:SI -> command name buffer (see #1663)
  3147. Return: DS:SI buffer updated
  3148.       if length byte is nonzero, the following bytes contain the uppercase
  3149.       internal command to execute and the command line buffer contains the
  3150.       command's parameters (the first DS:[SI] bytes are ignored)
  3151. Notes:    this call requests execution of the command which a previous call to
  3152.       AX=AE00h indicated was resident
  3153.     APPEND hooks this call
  3154. BUG:    Novell DOS 7.0's COMMAND.COM will attempt to run a disk program with
  3155.       the indicated name even if the returned length byte is zero, because
  3156.       the register used to flag this case is clobbered without first
  3157.       checking it.    The workaround is to set the command name buffer to
  3158.       "REM" followed by enough blanks to pad out the original command's
  3159.       length, which will also work with MS-DOS 6.
  3160.       (from padgett@tccslr.dnet.mmc.com)
  3161. SeeAlso: AX=AE00h
  3162. ----------2FAF00-----------------------------
  3163. INT 2F U - ???
  3164.     AX = AF00h
  3165.     ???
  3166. Return: AX = 0000h if interface supported
  3167. SeeAlso: AX=AF02h,AX=AF03h,AX=AF04h,AX=AF13h,AX=AF30h
  3168. ----------2FAF02-----------------------------
  3169. INT 2F U - ???
  3170.     AX = AF02h
  3171.     ???
  3172. Return: ES = ???
  3173. SeeAlso: AX=AF00h
  3174. ----------2FAF03-----------------------------
  3175. INT 2F U - ???
  3176.     AX = AF03h
  3177.     ???
  3178. Return: DX = ???
  3179. SeeAlso: AX=AF00h
  3180. ----------2FAF04-----------------------------
  3181. INT 2F U - ???
  3182.     AX = AF04h
  3183.     ???
  3184. Return: ???
  3185. SeeAlso: AX=AF00h
  3186. ----------2FAF05-----------------------------
  3187. INT 2F U - ???
  3188.     AX = AF05h
  3189.     ???
  3190. Return: ???
  3191. SeeAlso: AX=AF00h
  3192. ----------2FAF12-----------------------------
  3193. INT 2F U - ???
  3194.     AX = AF12h
  3195.     ???
  3196. Return: ES = ???
  3197. SeeAlso: AX=AF00h
  3198. ----------2FAF13-----------------------------
  3199. INT 2F U - ???
  3200.     AX = AF13h
  3201.     ???
  3202. Return: ???
  3203. SeeAlso: AX=AF00h
  3204. ----------2FAF30-----------------------------
  3205. INT 2F U - ???
  3206.     AX = AF30h
  3207.     ???
  3208. Return: ???
  3209. SeeAlso: AX=AF00h
  3210. ----------2FAFDE-----------------------------
  3211. INT 2F - Disk-Emu - INSTALLATION CHECK / VERSION CHECK
  3212.     AX = AFDEh
  3213.     ES:DI -> 14-byte buffer for data (see #1664)
  3214. Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
  3215.         BX = version (BH = major, BL = minor)
  3216.  
  3217. Format of Disk-Emu information data:
  3218. Offset    Size    Description    (Table 1664)
  3219.  00h    BYTE    number of tracks
  3220.  01h    BYTE    sectors per track
  3221.  02h    WORD    bytes per sector
  3222.  04h    BYTE    number of heads
  3223.  05h    BYTE    flag: 00h inactive, 01h active
  3224.  06h    BYTE    write protection (00h none, 01h full, 02h pseudo)
  3225.  07h    BYTE    saved (00h some unsaved data, 01h all data saved)
  3226.  08h    BYTE    disk in memory (00h no, 01h yes)
  3227.  09h    WORD    EMS handle
  3228.  0Bh    WORD    XMS handle
  3229.  0Dh    BYTE    memory type used for disk (00h XMS, 01h EMS)
  3230. --------V-2FB000-----------------------------
  3231. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  3232.     AX = B000h
  3233. Return: AL = status
  3234.         00h not installed, OK to install
  3235.         01h not installed, not OK to install
  3236.         FFh installed
  3237. Notes:    called by DISPLAY.SYS
  3238.     documented for DOS 5.0, but undocumented in prior versions
  3239. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  3240. --------V-2FB001-----------------------------
  3241. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  3242.     AX = B001h
  3243.     DS:BX -> DWORD buffer for address of 8x8 font table
  3244. Return: buffer filled
  3245.     AL = FFh
  3246. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  3247.       MS-DOS 3.30 sets it to 0030h
  3248. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  3249. --------I-2FB400-----------------------------
  3250. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  3251.     AX = B400h
  3252. Return: AL = FFh if installed
  3253. --------I-2FB401-----------------------------
  3254. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  3255.     AX = B401h
  3256. Return: ES -> host screen buffer (PC ASCII format)
  3257.     ES unchanged if communications not started
  3258. --------I-2FB402-----------------------------
  3259. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  3260.     AX = B402h
  3261.     BX = ???
  3262. Return: ???
  3263. --------I-2FB403-----------------------------
  3264. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  3265.     AX = B403h
  3266.     ???
  3267. Return: ???
  3268. --------I-2FB404-----------------------------
  3269. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  3270.     AX = B404h
  3271.     ???
  3272. Return: ???
  3273. --------I-2FB405-----------------------------
  3274. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  3275.     AX = B405h
  3276.     ???
  3277. Return: ???
  3278. ----------2FB700-----------------------------
  3279. INT 2F - APPEND - INSTALLATION CHECK
  3280.     AX = B700h
  3281. Return: AL = status
  3282.         00h not installed
  3283.         FFh installed
  3284. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  3285.       a TopView-compatible environment
  3286. SeeAlso: AX=B702h
  3287. ----------2FB701-----------------------------
  3288. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  3289.     AX = B701h
  3290. Return: ES:DI -> active APPEND path
  3291. Notes:    the only version of APPEND known to support this call is the APPEND
  3292.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  3293.       "Incorrect APPEND Version" and aborts the caller
  3294.     use AX=B704h first, and only call this function if that one is not
  3295.       supported
  3296. SeeAlso: AX=B700h,AX=B704h
  3297. ----------2FB702-----------------------------
  3298. INT 2F - APPEND - VERSION CHECK
  3299.     AX = B702h
  3300. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  3301.     AL = major version number
  3302.     AH = minor version number, otherwise
  3303. SeeAlso: AX=B700h,AX=B710h
  3304. ----------2FB703-----------------------------
  3305. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  3306.     AX = B703h
  3307.     ES:DI -> INT 21 handler APPEND should chain to
  3308. Return: ES:DI -> APPEND's INT 21 handler
  3309. Note:    each invocation of this function toggles a flag which APPEND uses to
  3310.       determine whether to chain to the user handler or the original
  3311.       INT 21
  3312. SeeAlso: AX=B700h,AX=B706h
  3313. ----------2FB704-----------------------------
  3314. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  3315.     AX = B704h
  3316. Return: ES:DI -> active APPEND path (128 bytes max)
  3317. Note:    some versions of append do not support this call, and return ES
  3318.       unchanged; in this case, you should call AX=B701h to get the APPEND
  3319.       path
  3320. SeeAlso: AX=B701h
  3321. ----------2FB706-----------------------------
  3322. INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  3323.     AX = B706h
  3324. Return: BX = APPEND state (see #1665)
  3325. SeeAlso: AX=B700h,AX=B707h
  3326.  
  3327. Bitfields for APPEND state:
  3328. Bit(s)    Description    (Table 1665)
  3329.  0    set if APPEND enabled
  3330.  1-11    reserved
  3331.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  3332.       been specified
  3333.  13    set if /PATH flag active
  3334.  14    set if /E flag active (environment var APPEND exists)
  3335.  15    set if /X flag active
  3336. ----------2FB707-----------------------------
  3337. INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  3338.     AX = B707h
  3339.     BX = APPEND state bits (see #1665)
  3340. SeeAlso: AX=B700h,AX=B706h
  3341. ----------2FB710-----------------------------
  3342. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  3343.     AX = B710h
  3344. Return: AX = current APPEND state (see #1665)
  3345.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  3346.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  3347.     DL = major version
  3348.     DH = minor version
  3349. SeeAlso: AX=B700h,AX=B702h
  3350. ----------2FB711-----------------------------
  3351. INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  3352.     AX = B711h
  3353. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  3354.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  3355.       is written over top of the filename passed to the INT 21h call.  The
  3356.       application must provide a sufficiently large buffer.     This state is
  3357.       reset after the next INT 21h call processed by APPEND.
  3358.     APPEND uses the byte at offset 3Dh in the PSP
  3359.       (see #0603 at INT 21/AH=26h) to store the flag telling it to
  3360.       overwrite the filename
  3361. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  3362.       INT 21/AH=6Ch
  3363. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  3364. --------N-2FB800-----------------------------
  3365. INT 2F - NETWORK - INSTALLATION CHECK
  3366.     AX = B800h
  3367. Return: AL = status
  3368.         00h        not installed
  3369.         nonzero installed
  3370.           BX = installed component flags (test in this order!)
  3371.            bit 6   server
  3372.            bit 2   messenger
  3373.            bit 7   receiver
  3374.            bit 3   redirector
  3375.            bit 1   LANPUP (LANtastic 4.0)
  3376. Notes:    this function is supported by PC LAN Program, LAN Manager, LANtastic,
  3377.       NetWare Lite, SilverNET, 10NET, etc.
  3378.     LANtastic and NetWare Lite use only BL for the return value, preserving
  3379.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  3380.       differentiation between those two groups by setting BH to a nonzero
  3381.       value before the call and checking its value on return.
  3382. SeeAlso: AX=4E53h,AX=B809h
  3383. --------N-2FB800CXF041-----------------------
  3384. INT 2F - 10NET - INSTALLATION CHECK
  3385.     AX = B800h
  3386.     CX = F041h
  3387. Return: AL = status
  3388.         00h        not installed
  3389.         nonzero installed
  3390.         BX = installed component flags (test in this order!)
  3391.            bit 6   server
  3392.            bit 2   messenger
  3393.            bit 7   receiver
  3394.            bit 3   redirector
  3395.            bit 1   LANPUP (LANtastic 4.0)
  3396.         CX = 10Net data segment
  3397.         CX:DX -> 10Net Configuration Table
  3398.               (see #0896 at INT 21/AX=5E01h"10NET")
  3399. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  3400.       call becomes identical to the standard installation check above
  3401. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  3402. --------N-2FB803-----------------------------
  3403. INT 2F - NETWORK - GET NETWORK EVENT POST HANDLER
  3404.     AX = B803h
  3405. Return: ES:BX -> current event post handler (see AX=B804h)
  3406. Note:    this function is supported by PC LAN Program, 10NET v5.0
  3407. SeeAlso: AC=B800h,AX=B804h,AX=B903h
  3408. --------N-2FB804-----------------------------
  3409. INT 2F - NETWORK - SET NETWORK EVENT POST HANDLER
  3410.     AX = B804h
  3411.     CX = (10NET) 0370h if 10Windows is hooking post handler
  3412.     ES:BX -> new event post handler (see #1666)
  3413. Notes:    used in conjunction with AX=B803h to hook into the network event post
  3414.       routine
  3415.     this function is supported by PC LAN Program, 10NET v5.0
  3416.     The specified handler is called on any network event.  Two events are
  3417.       defined: message received and critical network error.
  3418. SeeAlso: AX=B800h,AX=B803h,AX=B904h
  3419.  
  3420. (Table 1666)
  3421. Values network post routine is called with:
  3422.     AX = 0000h single block message
  3423.         DS:SI -> ASCIZ originator name
  3424.         DS:DI -> ASCIZ destination name
  3425.         ES:BX -> text header (see #1667)
  3426.     AX = 0001h start multiple message block
  3427.         CX = block group ID
  3428.         DS:SI -> ASCIZ originator name
  3429.         DS:DI -> ASCIZ destination name
  3430.     AX = 0002h multiple block text
  3431.         CX = block group ID
  3432.         ES:BX -> text header (see #1667)
  3433.     AX = 0003h end multiple block message
  3434.         CX = block group ID
  3435.     AX = 0004h message aborted due to error
  3436.         CX = block group ID
  3437.     AX = 0101h server received badly formatted network request
  3438.         Return: AX = FFFFh (PC LAN will process error)
  3439.     AX = 0102h unexpected network error
  3440.         ES:BX -> NCB (see #1894 at INT 5C)
  3441.     AX = 0103h server received INT 24 error
  3442.         other registers as for INT 24, except AH is in BH
  3443.         Return: as below, but only 0000h and FFFFh allowed
  3444. Return: AX = response code
  3445.         0000h user post routine processed message
  3446.         0001h PC LAN will process message, but message window not displayed
  3447.         FFFFh PC LAN will process message
  3448.  
  3449. Format of text header:
  3450. Offset    Size    Description    (Table 1667)
  3451.  00h    WORD    length of text (maximum 512 bytes)
  3452.  02h  N BYTEs    text of message
  3453. Note:    all CRLF sequences in message text are replaced by 14h; all other
  3454.       values below 20h (space) are reserved
  3455. --------N-2FB807-----------------------------
  3456. INT 2F - NETWORK - GET NetBIOS NAME NUMBER OF MACHINE NAME
  3457.     AX = B807h
  3458. Return: CH = NetBIOS name number of the machine name
  3459. SeeAlso: INT 21/AX=5E00h
  3460. --------N-2FB808-----------------------------
  3461. INT 2F U - NETWORK - RELINK KEYBOARD HANDLER
  3462.     AX = B808h
  3463.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  3464. Notes:    this call replaces the address to which the network software chains on
  3465.       an INT 09 without preserving the original value.  This allows a prior
  3466.       handler to unlink, but does not allow a new handler to be added
  3467.       such that the network gets the INT 09 first unless the new handler
  3468.       completely takes over INT 09 and never chains.
  3469.     this function is called by the DOS 3.2 KEYBxx.COM
  3470. SeeAlso: AX=B908h
  3471. --------N-2FB809-----------------------------
  3472. INT 2F - NETWORK - LANtastic, NetWare Lite - VERSION CHECK
  3473.     AX = B809h
  3474. Return: AH = major version
  3475.     AL = minor version (decimal)
  3476. Notes:    this function is supported in this form by LANtastic, NetWare Lite,
  3477.       SilverNET, ...
  3478.     NetWare Lite returns its own version number rather than a PC LAN
  3479.       compatibility version
  3480. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"PC LAN Program"
  3481. --------N-2FB809-----------------------------
  3482. INT 2F - NETWORK - PC LAN Program - VERSION CHECK
  3483.     AX = B809h
  3484. Return: AH = minor version (decimal)
  3485.     AL = major version
  3486. Notes:    this function is supported in this form by PC LAN Program, LAN Manager,
  3487.       the DOS LAN Requester, and 10NET v5.0
  3488.     10NET returns version 1.10 (AX=0A01h) for compatibility
  3489. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  3490. --------N-2FB80A-----------------------------
  3491. INT 2F u - PC Network 1.00 - ???
  3492.     AX = B80Ah
  3493.     ???
  3494. Return: ???
  3495. Program: PC Network is an early networking package which was renamed the
  3496.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  3497. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  3498. --------N-2FB80F-----------------------------
  3499. INT 2F - DOS LAN Requester - GET START PARAMETERS
  3500.     AX = B80Fh
  3501.     CX = size of return data buffer
  3502.     ES:DI -> return data buffer (see #1668)
  3503. Return: AX = status
  3504.          00h     network started
  3505.          nonzero network not started
  3506.     CX = number of bytes returned in buffer
  3507.     ES:DI buffer filled
  3508. SeeAlso: AX=B809h"PC LAN Program"
  3509.  
  3510. Format of DOS LAN Requester return data buffer:
  3511. Offset    Size    Description    (Table 1668)
  3512.  00h    BYTE    major version
  3513.  01h    BYTE    minor version
  3514.  02h    WORD    configuration flags given when network was started (see #1669)
  3515.  04h 15 BYTEs    NET START machine name (space padded)
  3516.  13h    BYTE    00h
  3517.  14h 9    BYTEs    NET START domain name (NULL padded)
  3518.  1Dh    BYTE    00h
  3519.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  3520.  3Eh    WORD    /SRV value
  3521.  40h    WORD    /ASG value
  3522.  42h    WORD    /NBC value
  3523.  44h    WORD    /NBS value
  3524.  46h    WORD    /BBC value
  3525.  48h    WORD    /BBS value
  3526.  4Ah    WORD    /PBC value
  3527.  4Ch    WORD    /PBS value
  3528.  4Eh    WORD    /PFS value
  3529.  50h    WORD    /PFT value
  3530.  52h    WORD    /PWT value
  3531.  54h    WORD    /KUC value
  3532.  56h    WORD    /KST value
  3533.  58h    WORD    /NVS value
  3534.  5Ah    WORD    /NMS value
  3535.  5Ch    WORD    /NDB value
  3536.  5Eh    WORD    /MBI value
  3537.  60h    BYTE    NetBIOS name number for machine name
  3538.  61h    BYTE    NetBIOS name number for domain name
  3539.  62h    WORD    NetBIOS sessions required for configuration
  3540.  64h    WORD    NetBIOS commands required for configuration
  3541.  66h    WORD    NetBIOS names required for configuration
  3542.  68h 128 BYTEs    NET START path (LANROOT)
  3543.  E8h    BYTE    00h
  3544.  
  3545. Bitfields for configuration flags:
  3546. Bit(s)    Description    (Table 1669)
  3547.  0    /NVS nonzero
  3548.  1    /NMS nonzero
  3549.  2    /API
  3550.  3    /HIM
  3551.  4    /LIM
  3552.  5    /ENC
  3553.  6    /POP
  3554.  7    /EMS
  3555.  8    /RPL
  3556.  9-12    reserved
  3557.  13    RDR started
  3558.  14    RCV started
  3559.  15    User is currently logged on
  3560. --------N-2FB900-----------------------------
  3561. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  3562.     AX = B900h
  3563. Return: AL = state
  3564.         00h if not installed
  3565.         FFh if installed
  3566. --------N-2FB901-----------------------------
  3567. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  3568.     AX = B901h
  3569. Return: AL = ???
  3570.     ES:BX -> RECEIVER.COM INT 2F handler
  3571. Desc:    allows more efficient execution by letting the caller bypass any other
  3572.       INT 2F handlers which have been added since RECEIVER.COM was
  3573.       installed
  3574. --------N-2FB903-----------------------------
  3575. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  3576.     AX = B903h
  3577. Return: ES:BX -> POST handler
  3578. SeeAlso: AX=B803h,AX=B904h
  3579. --------N-2FB904-----------------------------
  3580. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  3581.     AX = B904h
  3582.     ES:BX -> new POST handler
  3583. SeeAlso: AX=B804h,AX=B903h
  3584. --------N-2FB905-----------------------------
  3585. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  3586.     AX = B905h
  3587.     DS:BX -> 128-byte buffer for filename 1
  3588.     DS:DX -> 128-byte buffer for filename 2
  3589. Return: buffers filled from RECEIVER.COM internal buffers
  3590. Note:    use of filenames is unknown, but one appears to be for storing messages
  3591. SeeAlso: AX=B906h
  3592. --------N-2FB906-----------------------------
  3593. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  3594.     AX = B906h
  3595.     DS:BX -> 128-byte buffer for filename 1
  3596.     DS:DX -> 128-byte buffer for filename 2
  3597. Return: RECEIVER.COM internal buffers filled from user buffers
  3598. Note:    use of filenames is unknown, but one appears to be for storing messages
  3599. SeeAlso: AX=B905h
  3600. --------N-2FB908-----------------------------
  3601. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  3602.     AX = B908h
  3603.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  3604. Note:    this call replaces the address to which RECEIVER.COM chains on an
  3605.       INT 09 without preserving the original value.     This allows a prior
  3606.       handler to unlink, but does not allow a new handler to be added
  3607.       such that RECEIVER gets the INT 09 first.
  3608. SeeAlso: AX=B808h
  3609. --------V-2FBC00-----------------------------
  3610. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  3611.     AX = BC00h
  3612. Return: AL = state
  3613.         00h not installed, OK to install
  3614.         01h not installed, not OK to install
  3615.         FFh installed
  3616.         BX = 5456h ("TV")
  3617. Range:    AH=80h to AH=FFh, selected by commandline switch
  3618. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  3619. --------s-2FBC00BX3F3F-----------------------
  3620. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  3621.     AX = BC00h
  3622.     BX = 3F3Fh ('??')
  3623.     CX = 0000h
  3624.     DX = 0000h
  3625. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  3626. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  3627.       of sound boards; its primary programmer was Bryan Crane
  3628. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  3629. --------s-2FBC01-----------------------------
  3630. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  3631.     AX = BC01h
  3632.     BX = magic value 6D20h ('m ')
  3633.     CX = magic value 2076h (' v')
  3634.     DX = magic value 2020h ('  ')
  3635. Return: BX = ASCII major version (leading zeros significant)
  3636.     CX = ASCII minor version (leading zeros significant)
  3637. SeeAlso: AX=BC00h/BX=3F3Fh
  3638. --------s-2FBC02-----------------------------
  3639. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  3640.     AX = BC02h
  3641. Return: BX:DX -> state table
  3642. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  3643. --------s-2FBC03-----------------------------
  3644. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  3645.     AX = BC03h
  3646. Return: BX:DX -> function table
  3647. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  3648. --------s-2FBC04-----------------------------
  3649. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  3650.     AX = BC04h
  3651. Return: AX = 4D56h ('MV')
  3652.     BL = DMA channel
  3653.     CL = IRQ number
  3654. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  3655. --------V-2FBC06-----------------------------
  3656. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  3657.     AX = BC06h
  3658. Return: BX = 5456h ("TV")
  3659.     CH = major version
  3660.     CL = minor version
  3661.     DL = revision
  3662. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  3663. --------s-2FBC06-----------------------------
  3664. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  3665.     AX = BC06h
  3666. Return: AX = 4D56h ('MV')
  3667.     DX:BX -> status string (first byte 0Ch if no status message to display)
  3668. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  3669. --------s-2FBC0B-----------------------------
  3670. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  3671.     AX = BC0Bh
  3672. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  3673. SeeAlso: AX=BC00h/BX=3F3Fh
  3674. --------U-2FBE00-----------------------------
  3675. INT 2F - REDVIEW - INSTALLATION CHECK
  3676.     AX = BE00h
  3677. Return: AL = FFh if installed
  3678. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  3679.       copies data sent to standard output to standard error when the
  3680.       former has been redirected to a file, thus allowing the data to
  3681.       be seen on the screen at the same time it is captured in a file
  3682. --------N-2FBF00-----------------------------
  3683. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  3684.     AX = BF00h
  3685. Return: AL = FFh if installed
  3686. --------N-2FBF01-----------------------------
  3687. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  3688.     AX = BF01h
  3689.     ???
  3690. Return: ???
  3691. --------N-2FBF80-----------------------------
  3692. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  3693.     AX = BF80h
  3694.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  3695. Return: AL = FFh if installed
  3696.         ES:DI -> internal workspace
  3697. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  3698. --------F-2FC0-------------------------------
  3699. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  3700.     AH = C0h
  3701.     AL = function code (01h to 15h)
  3702. Return: ???
  3703. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  3704. --------N-2FC000-----------------------------
  3705. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  3706.     AX = C000h
  3707. Return: AL = FFh if installed
  3708.         DX:BX -> FAR entry point (see #1670,#1671,#1672)
  3709.         ES:SI -> signature string "LINKSUP$"
  3710. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  3711. Note:    on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  3712.       its search for a previous installation
  3713. SeeAlso: AX=5100h,AX=C000h"NESL"
  3714.  
  3715. (Table 1670)
  3716. Call LSL function "Request MLID Registration" with:
  3717.     BX = 0001h
  3718.     ES:SI -> registration??? record (see #1674)
  3719.     DS:DI -> buffer for LSL information block (see #1675)
  3720. Return: AX = completion code (0000h,8001h) (see #1673)
  3721.     DS:DI buffer filled if successful
  3722.     BX,CX corrupted
  3723. Note:    see "Novell LAN Driver Developer's Guide, Volume III" for more details
  3724.  
  3725. (Table 1671)
  3726. Call LSL function "get support entry points" with:
  3727.     BX = 0002h
  3728.     ES:SI -> buffer for entry point record (see #1676)
  3729. Return: ES:SI buffer filled
  3730.  
  3731. (Table 1672)
  3732. Call LSL function "Request MLID API entry point" with:
  3733.     BX = 0003h
  3734. Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  3735.         (call with BX=function 00h-10h, not range-checked)
  3736. Note:    LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
  3737.  
  3738. (Table 1673)
  3739. Values for LSL completion code:
  3740.  0000h    successful
  3741.  8001h    out of resources
  3742.  8002h    bad parameter
  3743.  8003h    no more items
  3744.  8004h    item not present
  3745.  8005h    failed
  3746.  8006h    receive overflow
  3747.  8007h    canceled
  3748.  8008h    bad command
  3749.  8009h    duplicate entry
  3750.  800Ah    no such handler
  3751.  800Bh    no such driver
  3752.  
  3753. Format of LSL registration record:
  3754. Offset    Size    Description    (Table 1674)
  3755.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  3756.           returning AX = completion code)
  3757.  04h    DWORD    -> ???
  3758.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  3759.  
  3760. Format of LSL information block:
  3761. Offset    Size    Description    (Table 1675)
  3762.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  3763.  04h    WORD    ???
  3764.  06h    WORD    ???
  3765. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  3766.       will crash if the above entry point is called with BX=0012h
  3767.  
  3768. Format of entry point record:
  3769. Offset    Size    Description    (Table 1676)
  3770.  00h    DWORD    pointer to protocol support entry point in LSL (see #1677)
  3771.  04h    DWORD    pointer to general support entry point in LSL (see #1678)
  3772.  
  3773. (Table 1677)
  3774. Call protocol support entry point with:
  3775.     BX = function number
  3776.         0000h ???
  3777.         0001h ???
  3778.         0002h ???
  3779.         0003h "ScheduleAESEvent"
  3780.         ES:SI -> AES ECB to be scheduled (see #1681)
  3781.         Return: ES,SI preserved
  3782.         0004h "CancelAESEvent"
  3783.         ES:SI -> ECB to be cancelled (see #1681)
  3784.         Return: ES,SI preserved
  3785.         0005h "GetIntervalMarker"
  3786.         Return: DX:AX = current interval marker in milliseconds
  3787.             all other registers preserved
  3788.         0006h "RegisterStack"
  3789.         AX = logical board number
  3790.         ES:SI -> bound stack info structure (see #1691)
  3791.         Return: BX = assigned Stack ID if AX=0000h
  3792.         0007h "DeRegisterStack"
  3793.         AX = protocol stack's assigned Stack ID
  3794.         0008h "RegisterDefaultStack"
  3795.         AX = logical board number
  3796.         ES:SI -> stack info structure (see #1692)
  3797.         0009h "DeRegisterDefaultStack"
  3798.         AX = logical board number
  3799.         000Ah "RegisterPrescanStack"
  3800.         AX = logical board number
  3801.         ES:SI -> stack info structure (see #1692)
  3802.         000Bh "DeRegisterPrescanStack"
  3803.         AX = logical board number
  3804.         000Ch "SendPacket"
  3805.         ES:SI -> send ECB
  3806.         Return: interrupts disabled
  3807.         000Dh ???
  3808.         000Eh ???
  3809.         000Fh ???
  3810.         0010h "GetStackIDFromName"
  3811.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  3812.         Return: BX = Stack ID if AX=0000h
  3813.         0011h "GetPIDFromStackIDBoard"
  3814.         AX = Stack ID for protocol
  3815.         CX = logical board number
  3816.         ES:SI -> 6-byte buffer for protocol ID
  3817.         0012h "GetMLIDControlEntry"
  3818.         AX = logical board number
  3819.         Return: ES:SI -> MLID control handler (see #1679) if AX=0000h
  3820.         0013h "GetProtocolControlEntry"
  3821.         AX = Stack ID or
  3822.             FFFEh Prescan stack
  3823.                 CX = logical board number
  3824.             FFFFh default protocol
  3825.                 CX = logical board number
  3826.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  3827.                   (see #1680)
  3828.         0014h "GetLSLStatistics"
  3829.         Return: AX = 0000h (successful)
  3830.             ZF set
  3831.             ES:SI -> LSL statistics table (see #1683)
  3832.         0015h "BindStack"
  3833.         AX = protocol stack's assigned Stack ID
  3834.         CX = logical board number
  3835.         0016h "UnbindStack"
  3836.         AX = protocol stack's assigned Stack ID
  3837.         CX = logical board number
  3838.         0017h "AddProtocolID"
  3839.         AX = frame type ID code
  3840.         ES:SI -> 6-byte protocol ID
  3841.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  3842.         0018h "RelinquishControl"
  3843.         Return: after LSL performs any necessary background processing
  3844.         0019h "GetLSLConfiguration"
  3845.         Return: AX = 0000h (successful)
  3846.             ZF set
  3847.             ES:SI -> LSL configuration table (see #1682)
  3848.         001Ah "GetTickMarker"
  3849.         Return: AX = number of 55ms ticks since LSL loaded
  3850.             BX destroyed
  3851. Return: AX = completion code (see #1673)
  3852.     ZF set if successful
  3853.     SS:SP, DS, BP preserved; most other registers may be destroyed
  3854.  
  3855. (Table 1678)
  3856. Call general support entry point with:
  3857.     BX = function number
  3858.         0000h "Allocate Memory" (obsolete)
  3859.          always returns AX=8008h (BAD_COMMAND)
  3860.         0001h "Free Memory" (obsolete)
  3861.          always returns AX=8008h (BAD_COMMAND)
  3862.         0002h "Realloc Memory" (obsolete)
  3863.          always returns AX=8008h (BAD_COMMAND)
  3864.         0003h "Memory Statistics" (obsolete)
  3865.          always returns AX=8008h (BAD_COMMAND)
  3866.         0004h "Add Memory To Pool" (obsolete)
  3867.          always returns AX=8008h (BAD_COMMAND)
  3868.         0005h "AddGeneralService"
  3869.         ES:SI -> General Service Control Block (see #1693)
  3870.         0006h "RemoveGeneralService"
  3871.         ES:SI -> General Service Control Block (see #1693)
  3872.         0007h "GetNETcfgPath"
  3873.         Return: AX = 0000h (successful)
  3874.             DS:DX -> ASCIZ pathname for NET.CFG
  3875.         0008h U ???     (in LSL 1.10)
  3876.         Return: AX = 0000h
  3877.             ES:SI -> ??? (a 22-byte data area)
  3878.         000Ah "GetCriticalSectionStatus"
  3879.         Return: BX = total outstanding calls to "StartCriticalSection"
  3880.         000Bh "ServiceEvents"
  3881.         interrupts disabled
  3882.         Return: interrupts disabled
  3883.         0010h "GetStackECB"
  3884.         DS:DI -> Lookahead structure (see #1694)
  3885.         interrupts disabled
  3886.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  3887.             interrupts disabled
  3888.         8000h-FFFFh reserved for user general service providers
  3889. Return: AX = completion code (see #1673)
  3890.     ZF set if successful
  3891.     SS:SP, DS, BP preserved
  3892.  
  3893. (Table 1679)
  3894. Call MLID control handler with:
  3895.     AX = logical board number
  3896.     BX = function number
  3897.         0000h "GetMLIDConfiguration"
  3898.         Return: ES:SI -> MLID's configuration table if successful
  3899.                   (see #1686 for format)
  3900.         0001h "GetMLIDStatistics"
  3901.         Return: ES:SI -> MLID's statistics table if successful
  3902.                   (see #1686 for format)
  3903.         0002h "AddMulticastAddress"
  3904.         ES:SI -> 6-byte multicast address to add
  3905.         0003h "DeleteMulticastAddress"
  3906.         ES:SI -> 6-byte multicast address to delete
  3907.         0005h "MLIDShutdown"
  3908.         CX = type
  3909.             0000h permanent (also deregisters from LSL)
  3910.             other temporary (shutdown hardware only)
  3911.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  3912.         0007h "Create Connection" (obsolete?)
  3913.         ???
  3914.         0008h "Delete Connection" (obsolete?)
  3915.         ???
  3916.         0009h "SetLookAheadSize"
  3917.         CX = requested lookahead size (00h-80h)
  3918.         000Ah "PromiscuousChange"
  3919.         CX = what to receive promiscuously
  3920.             bit 0: MAC frames
  3921.             bit 1: non-MAC frames
  3922.         000Bh "RegisterReceiveMonitor"
  3923.         CX = subfunction
  3924.             0000h disable receive monitoring
  3925.             else  enable receive monitoring
  3926.         ES:SI -> monitor receive routine
  3927.         ES:DI -> monitor transmit routine
  3928.         000Ch "Driver Poll" (obsolete?)
  3929.         ???
  3930. Return: AX = completion code (see #1673)
  3931.     ZF set if successful
  3932. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  3933.       mode flags field of the MLID's configuration table
  3934.  
  3935. (Table 1680)
  3936. Call protocol stack control entry point with:
  3937.     BX = function number
  3938.         0000h "GetProtocolStackConfiguration"
  3939.         Return: ES:SI -> protocol stack's configuration table
  3940.                    (see #1685)
  3941.         0001h "GetProtocolStackStatistics"
  3942.         Return: ES:SI -> protocol stack's statistics table (see #1684)
  3943.         0002h "BindToMLID"
  3944.         CX = board number to bind to
  3945.         ES:SI -> implementation-dependant parameter string
  3946.         0003h "UnBindFromMLID"
  3947.         CX = board number from which protocol should unbind
  3948.         ES:SI -> optional implementation-dependant parameter string
  3949.         0004h "MLIDDeRegistered"
  3950.         CX = board number that has de-registered from LSL
  3951. Return: AX = status
  3952.         0000h successful
  3953.         else implementation-dependant error codes
  3954.     ZF set if successful
  3955.     SS:SP, DS, BP preserved
  3956.  
  3957. Format of AES ECB:
  3958. Offset    Size    Description    (Table 1681)
  3959.  00h    DWORD    "AESLink" pointer used by LSL for list management
  3960.  04h    DWORD    number of milliseconds to wait
  3961.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  3962.  0Ch    DWORD    -> function to be invoked when time expires
  3963.         ES:SI will point to this structure on entry,
  3964.         DS, BP, and SS:SP must be preserved.
  3965. SeeAlso: #1695
  3966.  
  3967. Format of LSL Configuration Table:
  3968. Offset    Size    Description    (Table 1682)
  3969.  00h    BYTE    major version of configuration table
  3970.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  3971.  02h  8 BYTEs    reserved
  3972.  0Ah    BYTE    LSL major version (decimal)
  3973.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  3974. ---LSL 1.0x ---
  3975.  0Ch 14 BYTEs    reserved
  3976. ---LSL 1.10+ ---
  3977.  0Ch    WORD    maximum number of boards which LSL can handle
  3978.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  3979.  10h 12 BYTEs    reserved
  3980.  
  3981. Format of LSL Statistics Table:
  3982. Offset    Size    Description    (Table 1683)
  3983.  00h    BYTE    major version of statistics table format
  3984.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  3985.  02h    WORD    "GenericCounters" number of counters in static portion of
  3986.           table
  3987.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  3988.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  3989.           is the next field, etc.
  3990.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  3991.  0Ch    DWORD    reserved
  3992.  10h    DWORD    reserved
  3993.  14h    DWORD    "AESEventsCount" number of completed AES events
  3994.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  3995.           sections inside the MLIDs
  3996.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  3997.  20h    DWORD    reserved
  3998.  24h    DWORD    reserved
  3999.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  4000.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  4001.           protocol stack
  4002.  30h    WORD    "NumberCustom" number of custom variables that follow
  4003.  32h  N DWORDs    custom counters
  4004.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  4005.     var    length-prepended and NULL terminated string for Counter 0
  4006.     ...
  4007.     var    length-prepended and NULL terminated string for Counter N-1
  4008. SeeAlso: #1684,#1690
  4009.  
  4010. Format of Protocol Stack Statistics Table:
  4011. Offset    Size    Description    (Table 1684)
  4012.  00h    BYTE    statistics table major version
  4013.  01h    BYTE    statistics table minor version (decimal, 0-99)
  4014.  02h    WORD    number of generic counters following
  4015.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  4016.  08h    DWORD    TotalTxPackets
  4017.  0Ch    DWORD    TotalRxPackets
  4018.  10h    DWORD    IgnoredRxPackets
  4019.  14h    WORD    number of custom counters
  4020.  16h  N DWORDs    custom counters
  4021.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  4022.     var    length-prepended and NULL terminated string for Counter 0
  4023.     ...
  4024.     var    length-prepended and NULL terminated string for Counter N-1
  4025. SeeAlso: #1683,#1690
  4026.  
  4027. Format of Protocol Stack Configuration Table:
  4028. Offset    Size    Description    (Table 1685)
  4029.  00h    BYTE    configuration table major version
  4030.  01h    BYTE    configuration table minor version (decimal, 0-99)
  4031.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  4032.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  4033.  0Ah    BYTE    protocol stack major version
  4034.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  4035.  0Ch 16 BYTEs    reserved for future use
  4036.  
  4037. Format of MLID Configuration Table:
  4038. Offset    Size    Description    (Table 1686)
  4039.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  4040.  1Ah    BYTE    configuration table major version
  4041.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  4042.  1Ch  6 BYTEs    node address
  4043.  22h    WORD    MLID mode flags (see #1687)
  4044.  24h    WORD    board number
  4045.  26h    WORD    board instance (if more than one of same board installed)
  4046.  28h    WORD    maximum packet size
  4047.  2Ah    WORD    BestDataSize
  4048.  2Ch    WORD    WorstDataSize
  4049.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  4050.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  4051.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  4052.  3Ah    WORD    reserved (0000h)
  4053.  3Ch    WORD    frame type ID
  4054.  3Eh    WORD    TransportTime (milliseconds)
  4055.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  4056.  44h    WORD    lookahead size
  4057.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  4058.  48h    WORD    QueueDepth
  4059.  4Ah  6 BYTEs    reserved (0)
  4060.  50h    BYTE    driver major version
  4061.  51h    BYTE    driver minor version (decimal, 0-99)
  4062.  52h    WORD    bus/multicast flags (see #1688)
  4063.  54h    WORD    send retries
  4064.  56h    DWORD    ConfigTableLink
  4065.  5Ah    WORD    MLID sharing flags (see #1689)
  4066.  5Ch    WORD    slot number
  4067.  5Eh    WORD    I/O address 1
  4068.  60h    WORD    I/O range 1
  4069.  62h    WORD    I/O address 2
  4070.  64h    WORD    I/O range 2
  4071.  66h    DWORD    memory address 1
  4072.  6Ah    WORD    memory size 1
  4073.  6Ch    DWORD    memory address 2
  4074.  70h    WORD    memory size 2
  4075.  72h    BYTE    interrupt line 1
  4076.  73h    BYTE    interrupt line 2
  4077.  74h    BYTE    DMA line 1
  4078.  75h    BYTE    DMA line 2
  4079.  
  4080. Bitfields for MLID mode flags:
  4081. Bit(s)    Description    (Table 1687)
  4082.  15    MLID supports Octet Reversal
  4083.  14    node address is non-canonical
  4084.  13    promiscuous mode is supported
  4085.  12-8    reserved
  4086.  7    LDataSize field in LookAhead structure supported
  4087.  6    raw send supported
  4088.  5    MLID needs to be polled by LSL
  4089.  4    reserved (0)
  4090.  3    multicasting is supported
  4091.  2    not currently used by DOS ODI, set to 0.
  4092.  1    network card uses DMA.
  4093.  0    RealDriverBit, always set to 1.
  4094.  
  4095. Bitfields for bus/multicast flags:
  4096. Bit(s)    Description    (Table 1688)
  4097.  10-9    specialized multicast support
  4098.     00 = Group addressing is default for medium
  4099.     01 = Invalid
  4100.     10 = Filter group address in MLID.
  4101.     11 = Adapter filters group address.
  4102.  2    supports Micro Channel cards
  4103.  1    supports ISA cards
  4104.  0    supports EISA cards
  4105.  
  4106. Bitfields for MLID sharing flags:
  4107. Bit(s)    Description    (Table 1689)
  4108.  8    NIC can share DMA2
  4109.  7    NIC can share DMA1
  4110.  6    NIC can share IRQ2
  4111.  5    NIC can share IRQ1
  4112.  4    NIC can share Memory2
  4113.  3    NIC can share Memory1
  4114.  2    NIC can share IO2
  4115.  1    NIC can share IO1
  4116.  0    MLID is currently shut down
  4117.  
  4118. Format of MLID Statistics Table:
  4119. Offset    Size    Description    (Table 1690)
  4120.  00h    BYTE    driver statistics table major version
  4121.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  4122.  02h    WORD    number of generic counters (typically 13)
  4123.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  4124.  08h    DWORD    TotalTxCount
  4125.  0Ch    DWORD    TotalRxCount
  4126.  10h    DWORD    NoECBAvailableCount
  4127.  14h    DWORD    TxTooBigCount
  4128.  18h    DWORD    TxTooSmallCount
  4129.  1Ch    DWORD    RxOverflowCount
  4130.  20h    DWORD    RxTooBigCount
  4131.  24h    DWORD    RxTooSmallCount
  4132.  28h    DWORD    TxMiscCount
  4133.  2Ch    DWORD    RxMiscCount
  4134.  30h    DWORD    TxRetryCount
  4135.  34h    DWORD    RxChecksumErrorCount
  4136.  38h    DWORD    RxMismatchCount
  4137.  3Ch    WORD    number of custom counters
  4138.  3Eh  N DWORDs    custom counters
  4139.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  4140.     var    length-prepended and NULL terminated string for Counter 0
  4141.     ...
  4142.     var    length-prepended and NULL terminated string for Counter N-1
  4143. SeeAlso: #1683,#1684
  4144.  
  4145. Format of bound stack info structure:
  4146. Offset    Size    Description    (Table 1691)
  4147.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  4148.  04h    DWORD    -> receive handler
  4149.  08h    DWORD    -> control handler
  4150.  
  4151. Format of stack info structure:
  4152. Offset    Size    Description    (Table 1692)
  4153.  00h    DWORD    -> receive handler
  4154.  04h    DWORD    -> control handler
  4155.  
  4156. Format of General Service Control Block:
  4157. Offset    Size    Description    (Table 1693)
  4158.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  4159.  04h    DWORD    -> entry point for general service handler
  4160.  08h    WORD    command code for this general service (8000h-FFFFh)
  4161. Note:    the control block must not be altered or deallocated until the general
  4162.       service is removed
  4163.  
  4164. Format of Lookahead structure:
  4165. Offset    Size    Description    (Table 1694)
  4166.  00h    DWORD    -> Media header
  4167.  04h    DWORD    -> lookahead buffer
  4168.  08h    WORD    length of lookahead buffer
  4169.  0Ah  6 BYTEs    protocol ID
  4170.  10h    WORD    logical board number
  4171.  12h    WORD    lookahead size
  4172.  
  4173. Format of ODI ECB:
  4174. Offset    Size    Description    (Table 1695)
  4175.  00h    DWORD    link to next ECB
  4176.  04h    DWORD    link to previous ECB
  4177.  08h    WORD    general status
  4178.         0000h received successfully
  4179.         8006h packet overflow
  4180.         8007h reception aborted (data not valid)
  4181.  0Ah    DWORD    -> event service routine or RETF (never 0000h:0000h)(see #1696)
  4182.  0Eh    WORD    protocol stack identifier
  4183.  10h  6 BYTEs    protocol ID (sending only)
  4184.  16h    WORD    MLID board number (sending only)
  4185.  18h  6 BYTEs    MAC destination address
  4186.  1Eh  4 BYTEs    driver workspace
  4187.  22h  4 BYTEs    protocol workspace
  4188.  26h    WORD    total length of sent buffer
  4189.  28h    WORD    fragment count
  4190.  2Ah  2 WORDs    segment,offset of first fragment buffer
  4191.  2Eh    WORD    length of first fragment buffer
  4192.     ...
  4193. SeeAlso: #1681
  4194.  
  4195. (Table 1696)
  4196. Values event service routine is called with:
  4197.     ES:SI -> associated ODI ECB (see #1695)
  4198.     interrupts disabled
  4199. Return: DS,BP,SS,SP preserved
  4200.     interrupt disabled
  4201. Notes:    the service routine may invoke any IPX/ODI function except CloseSocket
  4202.     it is safe to send a packet and wait for completion if enough stack
  4203.       space is available
  4204. --------N-2FC000-----------------------------
  4205. INT 2F - Novell NetWare Event Service Layer (NESL) 1.0 - INSTALLATION CHECK
  4206.     AX = C000h
  4207. Return: AL = FFh if installed
  4208.         DX:BX -> FAR entry point (see #1697,#1698,#1699,#1700,#1701,#1702)
  4209.         ES:SI -> signature string "NESL_EVENTS"
  4210. Program: NESL is a generic interface for event handling in ODI drivers and
  4211.       other NetWare-oriented modules.  Primarily intended to support
  4212.       power management and "hot swapping" of PCMCIA cards, but it is not
  4213.       limited to this.
  4214. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4215. SeeAlso: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
  4216.  
  4217. (Table 1697)
  4218. Call NESL function GetNESLConfigPointer with:
  4219.     BX = 0000h
  4220. Return: AX = completion code (0000h,8008h) (see #1703)
  4221.     ES:SI -> NESL configuration table if successful (see #1704)
  4222.     BP,DS,STACK preserved
  4223. Desc:    Obtain a pointer to the NESL Configuration Table
  4224. SeeAlso: #1698,#1701
  4225.  
  4226. (Table 1698)
  4227. Call NESL function RegisterEventProducer with:
  4228.     BX = 0001h
  4229.     ES:SI -> Producer Event Control Block (PECB) (see #1705)
  4230. Return: AX = completion code (0000h, 8005h, 8008h) (see #1703)
  4231.     ES:SI -> still points to PECB
  4232.     BP,DS,STACK preserved
  4233. Desc:    Allows a module to register as a producer of a given event class
  4234. Note:    PECB_ClassName and PECB_Flags must be filled in on entry
  4235. SeeAlso: #1577,#1699,#1700,#1701
  4236.  
  4237. (Table 1699)
  4238. Call NESL function DeRegisterEventProducer with:
  4239.     BX = 0002h
  4240.     ES:SI -> PECB previously passed to RegisterEventProducer (see #1705)
  4241. Return: AX = completion code (0000h, 8002h, 8008h) (see #1703)
  4242.     ES:SI -> still points to PECB
  4243.     BP,DS,STACK preserved
  4244. Desc:    Allows a module to de-register as a producer of a given event class
  4245. SeeAlso: #1698,#1702
  4246.  
  4247. (Table 1700)
  4248. Call NESL function EventNotification with:
  4249.     BX = 0003h
  4250.     ES:SI -> PECB previously registered (see #1705)
  4251. Return: AX = completion code (0h, 8005h, 8008h) (see #1703)
  4252.     ES:SI -> still points to PECB
  4253.     BP,DS,STACK preserved
  4254. Desc:    Allows a module to signal that an event has just occurred in a given
  4255.       event class.
  4256. Notes:    Once called, NESL will generate corresponding callouts for this
  4257.       event, as described in Table #1707.
  4258.     on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
  4259.       (see #1708) filled in to match the desired event
  4260. SeeAlso: #1698
  4261.  
  4262. (Table 1701)
  4263. Call NESL function RegisterEventConsumer with:
  4264.     BX = 0004h
  4265.     ES:SI -> Consumer Event Control Block (CECB) (see #1706)
  4266. Return: AX = completion code (0h, 8005h, 8008h) (see #1703)
  4267.     ES:SI -> still points to CECB
  4268.     BP,DS,STACK preserved
  4269. Desc:    Allows a module to register as a consumer of a given event class
  4270. Note:    on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
  4271.       filled in.
  4272. SeeAlso: #1698,#1702
  4273.  
  4274. (Table 1702)
  4275. Call NESL function DeRegisterEventConsumer with:
  4276.     BX = 0005h
  4277.     ES:SI -> CECB previously passed to RegisterEventConsumer (see #1706)
  4278. Return: AX = completion code (0h, 8002h, 8008h) (see #1703)
  4279.     ES:SI -> still points to CECB
  4280.     BP,DS,STACK preserved
  4281. Desc:    Allows a module to de-register as a consumer of a given event class
  4282. SeeAlso: #1699,#1701
  4283.  
  4284. (Table 1703)
  4285. Values for NESL Error code:
  4286.  0000h    Successful
  4287.  8002h    Bad Parameter
  4288.  8005h    Fail
  4289.  8008h    Bad Command
  4290.  
  4291. Format of NESL Configuration Table:
  4292. Offset    Size    Description    (Table 1704)
  4293.  00h    WORD    NESL_Cfg_MajVer     Major Version of this table (=1)
  4294.  02h    WORD    NESL_Cfg_MinVer     Minor Version of this table (=0)
  4295.  04h    DWORD    NESL_Cfg_ModLName   -> ASCIZ long name of NESL module
  4296.         (typically -> "NetWare Event Service Layer for 16-Bit DOS")
  4297.  08h    DWORD    NESL_Cfg_ModSName   -> ASCIZ short name of NESL module
  4298.         (typically -> "NESL")
  4299.  0Ch    WORD    NESL_Cfg_ModMajVer  Major Version of NESL itself (=1)
  4300.  0Eh    WORD    NESL_Cfg_ModMinVer  Minor Version of NESL itself (=0)
  4301.  
  4302. Format of NESL Producer Event Control Block (PECB):
  4303. Offset    Size    Description    (Table 1705)
  4304.  00h    WORD    PECB_MajVer  Major Version of this structure (=1)
  4305.  02h    WORD    PECB_MinVer  Minor Version of this structure (=0)
  4306.  04h    DWORD    PECB_NextProducer   -> next PECB.  NULL if last.
  4307.  08h    DWORD    PECB_ClassName        -> ASCIZ string identifying event 
  4308.                       class (see #1709)
  4309.  0Ch    DWORD    PECB_ConsumerList   -> list of consumers for this event class
  4310.  10h    DWORD    PECB_DataPtr        -> points to additional data during events
  4311.  14h    DWORD    PECB_Flags
  4312.         Bit 0    =0  consumers should be called "top down" for this
  4313.                 event class.  (OSI level 7 down to OSI level 1)
  4314.             =1  consumers should be called "bottom up"
  4315.         Bits 1-31   Reserved =0
  4316.  18h  8 BYTEs    PECB_Reserved (all zeros)
  4317. Note:    Although the event producer provides the memory for the PECB, the
  4318.       NESL module controls this memory until the event class is
  4319.       de-registered.
  4320.     While owned by NESL, this structure should be treated as read-only,
  4321.       except for the PECB_DataPtr field.
  4322.  
  4323. Format of NESL Consumer Event Control Block (CECB):
  4324. Offset    Size    Description    (Table 1706)
  4325.  00h    WORD    CECB_MajVer  Major Version of this structure (=1)
  4326.  02h    WORD    CECB_MinVer  Minor Version of this structure (=0)
  4327.  04h    DWORD    CECB_NextConsumer   -> next CECB.  NULL if last.
  4328.  08h    DWORD    CECB_ClassName        -> ASCIZ string identifying event 
  4329.                       class (see #1709)
  4330.  0Ch    DWORD    CECB_NotifProc        -> FAR CALL event handler (see #1707)
  4331.  10h    WORD    CECB_OSILevel
  4332.         Bits 4-7 = OSI Layer of this module (1 through 7)
  4333.         Bits 0-3 = relative ordering with other modules on same layer
  4334.  13h 14 BYTEs    CECB_Reserved (all zeros)
  4335. Note:    Although the event consumer provides the memory for the CECB, the
  4336.       NESL module controls this memory until the consumer is de-registered.
  4337.     While owned by NESL, this structure should be treated as read-only,
  4338.  
  4339. (Table 1707)
  4340. Values NESL Consumer Notification Procedure is called with:
  4341.     ES:SI -> Event Parameter Block (EPB) (see #1708)
  4342. Return: AX = completion code (0000h, 8005h) (see #1703)
  4343.     ES:SI -> still points to EPB
  4344. Desc:    Called by NESL to notify the consumer when an event has occurred in
  4345.       an event class for which it has registered.
  4346. SeeAlso: #1706
  4347.  
  4348. Format of NESL Event Parameter Block (EPB):
  4349. Offset    Size    Description    (Table 1708)
  4350.  00h    WORD    EPB_MajVer  Major Version of this structure (=1)
  4351.  02h    WORD    EPB_MinVer  Minor Version of this structure (=0)
  4352.  04h    DWORD    EPB_ClassName  -> ASCIZ string identifying event class 
  4353.                   (see #1709)
  4354.  08h    DWORD    EPB_EventName  -> ASCIZ string identifying event within 
  4355.                   class (see #1710)
  4356.  0Ch    DWORD    EPB_ModuleName -> ASCIZ string identifying module 
  4357.                   producing event
  4358.  10h    DWORD    EPB_DataPtr0   -> event-defined data or NULL if not used
  4359.  14h    DWORD    EPB_DataPtr1   -> event-defined data or NULL if not used
  4360.  18h  8 BYTEs    EPB_Reserved (all zeros)
  4361.  
  4362. (Table 1709)
  4363. Values for NESL Event Class Names:
  4364.  Event Class        Description
  4365.  -------------------    -----------------------------------------
  4366.  Service Suspend    Suspension of a service.  Called top-down.
  4367.  Service Resume        Resumption/availability of a service. Called bottom-up.
  4368.  Service/Status Change    Change in status or level of service.  Called top-down.
  4369.  Suspend Request    Request to suspend a service.  Called bottom-up.
  4370. Note:    Contact Novell Labs to register new event classes.
  4371.  
  4372. (Table 1710)
  4373. Values for NESL Event Names:
  4374.  Event Name            Class            Description
  4375.  --------------------------    -------------        ---------------------------
  4376.  MLID Cable Disconnect        Service Suspend        Cable disconnected from NIC
  4377.  MLID Card Removal        Service Suspend        PCMCIA card removed
  4378.  MLID Hardware Failure        Service Suspend        Serious hardware 
  4379.                               failure in NIC
  4380.  MLID Not In Range        Service Suspend        Wireless access point 
  4381.                               is out of range
  4382.  MLID Shutdown            Service Suspend        MLID was shut down
  4383.  MLID Media Access Denied    Service Suspend        Access to physical 
  4384.                               medium unsuccessful
  4385.  MLID Cable Reconnect        Service Resume        Cable re-connected to NIC
  4386.  MLID Card Insertion Complete    Service Resume        PCMCIA card inserted
  4387.  MLID In Range            Service Resume        Wireless access point 
  4388.                               in range
  4389.  MLID Reset            Service Resume        MLID was just reset
  4390.  MLID Access Point Change    Serv/Status Change  Station has moved to 
  4391.                               new access point
  4392.  MLID Speed Change        Serv/Status Change  Change in communic. speed
  4393. Note:    Contact Novell Labs to register new event names.
  4394.     For all predefined events above, EPB_DataPtr0 (see #1708) points
  4395.       to the MLID Configuration table (see AX=C000h"ODI") for the
  4396.       affected MLID.
  4397. --------N-2FC000-----------------------------
  4398. INT 2F - Novell NetWare Connect NETWARN - INSTALLATION CHECK
  4399.     AX = C000h
  4400. Return: AL = FFh if installed
  4401.         SI = segment of resident portion
  4402. Program: NETWARN is a utility supplied with NetWare Connect to warn a
  4403.       remote dialup user when programs are about to be loaded slowly over
  4404.       the modem link.
  4405. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4406. Note:    on return, verify that it is NETWARN responding by examining signature
  4407.       at in NETWARN's data table in the resident segment (see #1711)
  4408. SeeAlso: AX=C000h"ODI",AX=C000h"NESL"
  4409.  
  4410. Format of NETWARN Configuration structure:
  4411. Offset    Size    Description    (Table 1711)
  4412.  103h 7 BYTEs    signature string "NETWARN"
  4413.  10Ah    BYTE    major version in ASCII (="1")
  4414.  10Bh    BYTE    minor version in ASCII (="0")
  4415.  10Ch    DWORD    minimum size of EXE cared about in bytes (/S=xxxx)
  4416.  110h    WORD    same value in kilobytes (see 0113h, bit 4 below)
  4417.  112h    BYTE    multiplex code (AH value) actually being used
  4418.  113h    WORD    options (see #1712)
  4419.  115h    DWORD    INT 21h vector before NETWARN loaded
  4420.  119h    DWORD    INT 2Fh vector before NETWARN loaded
  4421.  11Dh 16 BYTEs    ASCIIZ local name of last device which was checked
  4422.  12Dh 128 BYTEs ASCIIZ remote name of last device which was checked
  4423. Note:    the specified offsets are from the start of the resident segment
  4424.  
  4425. Bitfields for NETWARN options:
  4426. Bit(s)    Description    (Table 1712)
  4427.  0    ??? (=0)
  4428.  1    /U (Unload) selected (never in resident)
  4429.  2    /E (Enabled) Will trap & check EXEC's
  4430.  3    /D (Disabled) No EXEC checking done
  4431.  4    /S (Size) was set (see 010Ch, 0110h above)
  4432.  5    /P (Path shown)
  4433.  6    /H or /? (Help) (never in resident)
  4434. SeeAlso: #1711
  4435. --------f-2FC000-----------------------------
  4436. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  4437.     AX = C000h
  4438. Return: AL = FFh if installed
  4439.        ES:DI -> signature string "FN32 32CHAR TSR"
  4440. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  4441. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  4442.       managing dictionary files in each directory which contains long
  4443.       filenames
  4444. --------M-2FC000-----------------------------
  4445. INT 2F - QMR - INSTALLATION CHECK
  4446.     AX = C000h
  4447. Return: AL = FFh if installed
  4448.         ES:DI -> signature string "QMR1!"
  4449. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  4450.       service interrupt (int 33h) and substitutes a fast software
  4451.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  4452. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4453. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  4454. --------V-2FC000-----------------------------
  4455. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  4456.     AX = C000h
  4457. Return: AL = FFh if installed
  4458.         BX = segment of resident code
  4459. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  4460.       Javurek
  4461. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  4462. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  4463.       resident code (addressed through BX) against its own copy of the
  4464.       resident code to complete the installation check
  4465. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  4466. Index:    screen saver;VGAsave
  4467. --------V-2FC000-----------------------------
  4468. INT 2F - AD-DOS - INSTALLATION CHECK
  4469.     AX = C000h
  4470. Return: AL = FFh if installed
  4471.         BX = 4144h ('AD')
  4472.         CX = 2D44h ('-D')
  4473.         DX = 4F53h ('OS')
  4474. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  4475.       MS Windows
  4476. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4477. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h,INT 14/AX=AA01h
  4478. Index:    screen saver;AD-DOS
  4479. --------U-2FC000-----------------------------
  4480. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  4481.     AX = C000h
  4482. Return: AL = FFh if installed
  4483.         ES = segment of resident code
  4484. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  4485.       with 3-mode floppy drives to read Wang document diskettes
  4486. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4487. Note:    The installation check is completed by comparing the resident code
  4488.       with the copy in the transient program
  4489. --------i-2FC000-----------------------------
  4490. INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
  4491.     AX = C000h
  4492. Return: AL = FFh if multiplex number in use
  4493.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  4494. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  4495.       ASPI host manager; it is part of the Personal Measure system
  4496.       activity monitor from Spirit of Performance, Inc.
  4497. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4498. SeeAlso: AX=C000h"PMEASURE"
  4499. --------i-2FC000-----------------------------
  4500. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  4501.     AX = C000h
  4502. Return: AL = FFh if multiplex number in use
  4503.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  4504. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  4505.       is part of the Personal Measure system activity monitor from Spirit
  4506.       of Performance, Inc.
  4507. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4508. Note:    If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
  4509.       installed, PMEASURE.EXE uses the next highest free multiplex number.
  4510. SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
  4511. --------i-2FC000-----------------------------
  4512. INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
  4513.     AX = C000h
  4514. Return: AL = FFh if installed
  4515.     ES:DI -> signature string "PMEASUREHOOK"
  4516.     AX = C000 if not installed, per mux id conventions
  4517.     DH = major release number (binary)
  4518.     DL = minor release number (binary)
  4519. Program: The Personal Measure system activity monitor from Spirit of
  4520.       Performance, Inc. uses an extensible series of modules to hook
  4521.       into various operating system interfaces and monitor system calls.
  4522.       Current hook modules are ASPIHOOK.SYS for ASPI device activity
  4523.       and CDRHOOK.SYS for non-ASPI CD-ROM activity.     All hook modules
  4524.       share the same mux id.
  4525. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4526. SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
  4527. --------c-2FC000-----------------------------
  4528. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  4529.     AX = C000h
  4530. Return: AL = FFh if installed
  4531.         SI = signature value 20D6h
  4532.         DI = signature value 8761h
  4533.         ES:BX -> configuration table (see #1713)
  4534.         CX = ??? (0300h)
  4535.         DX = ??? (0020h)
  4536. Program: PCACHE is the resident print spooler portion of PrintCache by
  4537.       LaserTools; it may use either memory or disk space to spool output
  4538. Range:    AH=C0h to AH=FFh, selected by commandline switch
  4539. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  4540.  
  4541. Format of PrintCache configuration table:
  4542. Offset    Size    Description    (Table 1713)
  4543.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  4544.  1Ah  2 BYTEs    ???
  4545.  1Ch    DWORD    -> data table (see #1714)
  4546.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  4547.  24h  5 BYTEs    ???
  4548.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  4549.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  4550.  37h    WORD    buffered port BIOS port number
  4551.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  4552.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  4553.  40h    WORD    physical port BIOS port number
  4554.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  4555.  47h    BYTE    port driver IRQ
  4556.  48h 21 BYTEs    ???
  4557.  5Dh    WORD    buffer size in K
  4558.  5Fh 27 BYTEs    ???
  4559.  7Ah    BYTE    popup hotkey shift states (see #0442 at INT 16/AH=02h)
  4560.  7Bh    BYTE    popup hotkey scan code (see #0005 at INT 09h"IRQ1")
  4561.  7Ch  4 BYTEs    ???
  4562.  80h 20 BYTEs    ASCIZ printer type name
  4563.     ???
  4564.  
  4565. Format of PrintCache data table:
  4566. Offset    Size    Description    (Table 1714)
  4567.  00h  2 BYTEs    ???
  4568.  02h    DWORD    -> ??? entry point
  4569.     ???
  4570. --------U-2FC000-----------------------------
  4571. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  4572.     AX = C000h
  4573. Return: AL = FFh if installed
  4574.         BX = program ID (see #1715)
  4575.         CX = 464Bh (signature "FK")
  4576.         DX = revision number (DH = major, DL = minor)
  4577.         ES = resident segment of TSR
  4578. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  4579. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  4580.  
  4581. (Table 1715)
  4582. Values for Frank Kintrup TSR program ID:
  4583.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  4584.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  4585.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  4586.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  4587.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  4588. --------K-2FC000-----------------------------
  4589. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  4590.     AX = C000h
  4591. Return: AL = FFh if possibly installed
  4592. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  4593. SeeAlso: AX=C001h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  4594. --------V-2FC000-----------------------------
  4595. INT 2F - DIMWIT - INSTALLATION CHECK
  4596.     AX = C000h
  4597. Return: AL = FFh if installed
  4598.         ES:DI -> signature string "DIMDOS" or "DIMWIN"
  4599. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  4600. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4601. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  4602. Index:    screen saver;DIMWIT
  4603. --------F-2FC000BX444B-----------------------
  4604. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  4605.     AX = C000h
  4606.     BX = 444Bh ('DK')
  4607.     CX = 4A4Eh ('AN')
  4608. Return: AL = status
  4609.         00h not installed, OK to install
  4610.         FFh installed
  4611.         BX = 646Bh ('dk')
  4612.         CX = 6A6Eh ('an')
  4613. Range:    AH=C0h to AH=FFh, selected automatically
  4614. SeeAlso: AH=C0h"MTEZ"
  4615. ----------2FC000-----------------------------
  4616. INT 2F U - TSENGP.COM - INSTALLATION CHECK
  4617.     AX = C000h
  4618. Return: AL = status
  4619.         00h not installed, OK to install
  4620.         FFh installed
  4621.         DS = segment of resident code
  4622. Program: TSENGP.COM is a TSR supplied by Compaq to fix an incompatibility
  4623.       between some applications and Tseng ET4000-based video adapters
  4624. Range:    AH=C0h to AH=FFh, selected automatically
  4625. Note:    the installation check is completed by comparing the first eleven
  4626.       bytes at DS:005Fh against the TSR's code (80h FCh 06h 74h 0Ah
  4627.       80h FCh 07h 74h 05h EAh)
  4628. --------M-2FC001-----------------------------
  4629. INT 2F - QMR - REQUEST HARDWARE RESET
  4630.     AX = C001h
  4631. Return: ES = QMR code segment
  4632.     AL destroyed
  4633. Desc:    this function is used to force a full mouse reset when QMR is installed
  4634. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  4635. --------V-2FC001-----------------------------
  4636. INT 2F - DIMWIT - GET CONFIGURATION DATA
  4637.     AX = C001h
  4638. Return: ES:DI -> TSR configuration data (see #1716)
  4639. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  4640. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4641. SeeAlso: AX=C000h"DIMWIT",AX=C001h"AD-DOS"
  4642. Index:    screen saver;DIMWIT
  4643.  
  4644. Format of DIMWIT TSR configuration data:
  4645. Offset    Size    Description    (Table 1716)
  4646.  00h    WORD    blanking delay in clock ticks
  4647.  02h    BYTE    instant-blanking hotkey scan code
  4648.         Ctrl and Alt must also be pressed
  4649. --------V-2FC001ES0000-----------------------
  4650. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  4651.     AX = C001h
  4652.     ES = 0000h
  4653. Return: AL = 00h if successful
  4654.         ES = AD-DOS TSR Code Segment
  4655. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  4656. Index:    screen saver;AD-DOS
  4657. --------c-2FC001-----------------------------
  4658. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  4659.     AX = C001h
  4660. Return: AL = FFh if installed
  4661.         ES:BX -> ???
  4662.         ES:DX -> ???
  4663.         ES:SI -> ???
  4664.         ES:DI -> ??? (equivalent to AX=C002h)
  4665. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  4666. --------U-2FC001-----------------------------
  4667. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  4668.     AX = C001h
  4669. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  4670. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  4671. --------K-2FC001CX03FB-----------------------
  4672. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - UNINSTALL
  4673.     AX = C001h
  4674.     CX = 03FBh return address to continue uninstall if possible
  4675. Return: program uninstalled
  4676. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  4677. SeeAlso: AX=C000h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  4678. --------i-2FC001-----------------------------
  4679. INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
  4680.     AX = C001h
  4681.     DX = segment of PMEASURE.EXE or 0000h
  4682.     BX = offset in PMEASURE.EXE or 0000h
  4683.     CX = offset in PMEASURE.EXE or 0000h
  4684. Return: None
  4685. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  4686.       is part of the Personal Measure system activity monitor from Spirit
  4687.       of Performance, Inc.    PMEASURE uses this call to inform its hook
  4688.       modules whether or not it is running and to pass information about
  4689.       shared data and procedures.
  4690. Warning: This information documents a function that is private to Personal
  4691.       Measure and is provided as information only.    It should NOT be called
  4692.       by any software other than Personal Measure.
  4693. SeeAlso: AX=C000h"PERSONAL MEASURE HOOK MODULE"
  4694. --------V-2FC002-----------------------------
  4695. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  4696.     AX = C002h
  4697. Return: AL = 00h if successful
  4698.         BX = status
  4699.         0000h no input since last check
  4700.         0001h new input available
  4701. Note:    this call also resets the new-input flag
  4702. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  4703. Index:    screen saver;AD-DOS
  4704. --------M-2FC002-----------------------------
  4705. INT 2F - QMR - DISABLE QMR
  4706.     AX = C002h
  4707. Return: ES = QMR code segment
  4708.     AL destroyed
  4709. Desc:    this call temporarily disables QMR
  4710. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  4711. --------c-2FC002-----------------------------
  4712. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  4713.     AX = C002h
  4714. Return: AX = ??? in K
  4715.     BX = size of print buffer in K
  4716. Program: PCACHE is the resident print spooler portion of PrintCache by
  4717.       LaserTools; it may use either memory or disk space to spool output
  4718. SeeAlso: AX=C000h"PCACHE"
  4719. --------U-2FC002-----------------------------
  4720. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  4721.     AX = C002h
  4722. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  4723. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  4724. --------V-2FC003-----------------------------
  4725. INT 2F - AD-DOS - SET MINUTES TO WAIT
  4726.     AX = C003h
  4727.     BX = minutes to wait before blanking screen
  4728. Return: AL = 00h if successful
  4729. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  4730.       MS Windows
  4731. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4732. Note:    this call also resets the delay timer
  4733. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  4734. Index:    screen saver;AD-DOS
  4735. --------M-2FC003-----------------------------
  4736. INT 2F - QMR - ENABLE QMR
  4737.     AX = C003h
  4738. Return: ES = QMR code segment
  4739.     AL destroyed
  4740. Desc:    this call enables QMR after it has been disabled
  4741. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  4742. --------c-2FC003-----------------------------
  4743. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  4744.     AX = C003h
  4745. Return: BX destroyed
  4746. SeeAlso: AX=C004h"PCACHE"
  4747. --------V-2FC004-----------------------------
  4748. INT 2F - AD-DOS - GET MINUTES TO WAIT
  4749.     AX = C004h
  4750. Return: AL = 00h if successful
  4751.         BX = minutes to wait before blanking screen
  4752. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  4753. Index:    screen saver;AD-DOS
  4754. --------c-2FC004-----------------------------
  4755. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  4756.     AX = C004h
  4757. Return: BX destroyed
  4758. SeeAlso: AX=C003h"PCACHE"
  4759. --------V-2FC005-----------------------------
  4760. INT 2F - AD-DOS - SET BLANKER STATUS
  4761.     AX = C005h
  4762.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  4763. Return: AL = 00h if successful
  4764. SeeAlso: AX=C006h"AD-DOS"
  4765. Index:    screen saver;AD-DOS
  4766. --------c-2FC005-----------------------------
  4767. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4768.     AX = C005h
  4769.     ???
  4770. Return: BX destroyed
  4771.     ???
  4772. Program: PCACHE is the resident print spooler portion of PrintCache by
  4773.       LaserTools; it may use either memory or disk space to spool output
  4774. Range:    AH=C0h to AH=FFh, selected by commandline switch
  4775. SeeAlso: AX=C000h"PCACHE"
  4776. --------V-2FC006-----------------------------
  4777. INT 2F - AD-DOS - GET BLANKER STATUS
  4778.     AX = C006h
  4779. Return: AL = 00h if successful
  4780.         BX = current state of screen blanker (0000h inactive, 0001h active)
  4781. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  4782.       MS Windows
  4783. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4784. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  4785. Index:    screen saver;AD-DOS
  4786. --------c-2FC006-----------------------------
  4787. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4788.     AX = C006h
  4789.     ???
  4790. Return: BX destroyed
  4791.     ???
  4792. Note:    this function appears to be identical to AX=C007h
  4793. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  4794. --------V-2FC007-----------------------------
  4795. INT 2F - AD-DOS - SET HOT KEY
  4796.     AX = C007h
  4797.     BX = hot key
  4798.     CL = hot key shift status
  4799. Return: AL = 00h if successful
  4800. SeeAlso: AX=C008h"AD-DOS"
  4801. Index:    screen saver;AD-DOS
  4802. --------c-2FC007-----------------------------
  4803. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4804.     AX = C007h
  4805.     ???
  4806. Return: BX destroyed
  4807.     ???
  4808. Note:    this function appears to be identical to AX=C006h
  4809. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  4810. --------V-2FC008-----------------------------
  4811. INT 2F - AD-DOS - GET CURRENT HOT KEY
  4812.     AX = C008h
  4813. Return: AX = status
  4814.         0000h successful
  4815.         BX = Hot Key
  4816.         CL = Hot Key Shift Status
  4817.         0008h otherwise
  4818. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  4819. Index:    screen saver;AD-DOS
  4820. --------c-2FC008-----------------------------
  4821. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  4822.     AX = C008h
  4823. Return: BX destroyed
  4824. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  4825. --------V-2FC009-----------------------------
  4826. INT 2F - AD-DOS - UNBLANK MONITOR
  4827.     AX = C009h
  4828. Return: AL = 00h if successful
  4829. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  4830.       MS Windows
  4831. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4832. Note:    this function works by simulating keyboard activity
  4833. Index:    screen saver;AD-DOS
  4834. --------c-2FC009-----------------------------
  4835. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  4836.     AX = C009h
  4837. Return: BX destroyed
  4838. Program: PCACHE is the resident print spooler portion of PrintCache by
  4839.       LaserTools; it may use either memory or disk space to spool output
  4840. Range:    AH=C0h to AH=FFh, selected by commandline switch
  4841. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  4842. --------V-2FC00A-----------------------------
  4843. INT 2F - AD-DOS - ???
  4844.     AX = C00Ah
  4845. Return: AX = status
  4846.         0000h successful
  4847.         BH = ??
  4848.         BL = ??
  4849.         000Ah failed
  4850. Index:    screen saver;AD-DOS
  4851. --------c-2FC00A-----------------------------
  4852. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4853.     AX = C00Ah
  4854.     ???
  4855. Return: AH = bit flags
  4856.         bit 5: ???
  4857.     AL = bit flags
  4858.         bit 4: ???
  4859.         bit 3: ???
  4860.     BX destroyed
  4861.     ???
  4862. SeeAlso: AX=C000h"PCACHE"
  4863. --------V-2FC00B-----------------------------
  4864. INT 2F - AD-DOS - ???
  4865.     AX = C00Bh
  4866. Return: AX = status
  4867.         0000h successful
  4868.         000Bh failed
  4869. Index:    screen saver;AD-DOS
  4870. --------c-2FC00B-----------------------------
  4871. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  4872.     AX = C00Bh
  4873. Return: BX destroyed
  4874. SeeAlso: AX=C000h"PCACHE"
  4875. --------V-2FC00C-----------------------------
  4876. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  4877.     AX = C00Ch
  4878. Return: AX = status
  4879.         0000h successful
  4880.         000Ch failed
  4881. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  4882.       MS Windows
  4883. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  4884. Index:    screen saver;AD-DOS
  4885. --------c-2FC00C-----------------------------
  4886. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  4887.     AX = C00Ch
  4888. Return: AX = ??? (0000h)
  4889.     BX = ??? (0000h)
  4890.     CX = ??? (0100h)
  4891.     DL = ???
  4892.     DH = ???
  4893. SeeAlso: AX=C000h"PCACHE"
  4894. --------c-2FC00D-----------------------------
  4895. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  4896.     AX = C00Dh
  4897.     DL = ???
  4898. Return: BX destroyed
  4899. Program: PCACHE is the resident print spooler portion of PrintCache by
  4900.       LaserTools; it may use either memory or disk space to spool output
  4901. Range:    AH=C0h to AH=FFh, selected by commandline switch
  4902. SeeAlso: AX=C000h"PCACHE"
  4903. --------V-2FC00E-----------------------------
  4904. INT 2F - AD-DOS - SET PASSWORD STATUS
  4905.     AX = C00Eh
  4906.     BX = new state (0000h disabled, 0001h enabled)
  4907. Return: ???
  4908. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  4909. Index:    screen saver;AD-DOS
  4910. --------c-2FC00E-----------------------------
  4911. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  4912.     AX = C00Eh
  4913.     ES:DX -> ???
  4914. Return: BX destroyed
  4915. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  4916.       but ignored if already set; a counter is incremented
  4917. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  4918. --------V-2FC00F-----------------------------
  4919. INT 2F - AD-DOS - GET PASSWORD STATUS
  4920.     AX = C00Fh
  4921. Return: BX = current state (0000h disabled, 0001h enabled)
  4922. SeeAlso: AX=C00Eh"AD-DOS"
  4923. Index:    screen saver;AD-DOS
  4924. --------c-2FC00F-----------------------------
  4925. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  4926.     AX = C00Fh
  4927. Return: BX destroyed
  4928. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  4929.       internal pointer variable to 0000h:0000h when it reaches zero
  4930. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  4931. --------c-2FC010-----------------------------
  4932. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  4933.     AX = C010h
  4934.     CX = index of ??? table (00h-02h, others treated as 00h)
  4935.     SI = offset into data table
  4936. Return:    AL = byte at specified offset into table
  4937.     BX destroyed
  4938. SeeAlso: AX=C000h"PCACHE"
  4939. --------c-2FC011-----------------------------
  4940. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  4941.     AX = C011h
  4942. Return: AX = ??? (0007h)
  4943.     BX = ??? (0001h)
  4944.     CH = ???
  4945.     CL = ???
  4946. SeeAlso: AX=C000h"PCACHE"
  4947. --------c-2FC012-----------------------------
  4948. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  4949.     AX = C012h
  4950. Return: AX = ???
  4951.     BX = ???
  4952.     CX = ???
  4953.     DX = ???
  4954. SeeAlso: AX=C000h"PCACHE"
  4955. --------c-2FC013-----------------------------
  4956. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4957.     AX = C013h
  4958.     ???
  4959. Return: BX destroyed
  4960.     ???
  4961. Program: PCACHE is the resident print spooler portion of PrintCache by
  4962.       LaserTools; it may use either memory or disk space to spool output
  4963. Range:    AH=C0h to AH=FFh, selected by commandline switch
  4964. SeeAlso: AX=C000h"PCACHE"
  4965. --------c-2FC014-----------------------------
  4966. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4967.     AX = C014h
  4968.     ???
  4969. Return: BX destroyed
  4970.     ???
  4971. SeeAlso: AX=C000h"PCACHE"
  4972. --------c-2FC015-----------------------------
  4973. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4974.     AX = C015h
  4975.     ???
  4976. Return: BX destroyed
  4977.     ???
  4978. SeeAlso: AX=C000h"PCACHE"
  4979. --------c-2FC016-----------------------------
  4980. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  4981.     AX = C016h
  4982. Return: BX destroyed
  4983. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  4984. --------c-2FC017-----------------------------
  4985. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  4986.     AX = C017h
  4987. Return: BX destroyed
  4988. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  4989. --------c-2FC018-----------------------------
  4990. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  4991.     AX = C018h
  4992.     ???
  4993. Return: BX destroyed
  4994.     ???
  4995. Note:    the first instruction of this function is an indirect jump which points
  4996.       at a RET by default
  4997. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  4998. --------c-2FC019-----------------------------
  4999. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  5000.     AX = C019h
  5001.     ???
  5002. Return: BX destroyed
  5003.     ???
  5004. Note:    the first instruction of this function is an indirect jump which points
  5005.       at a RET by default
  5006. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  5007. --------c-2FC01A-----------------------------
  5008. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  5009.     AX = C01Ah
  5010. Return: BX destroyed
  5011. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  5012. --------c-2FC01B-----------------------------
  5013. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  5014.     AX = C01Bh
  5015. Return: BX destroyed
  5016. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  5017. --------c-2FC01C-----------------------------
  5018. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  5019.     AX = C01Ch
  5020.     ???
  5021. Return: AX = ???
  5022.     BX destroyed
  5023. SeeAlso: AX=C000h"PCACHE"
  5024. --------c-2FC01D-----------------------------
  5025. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  5026.     AX = C01Dh to C01Fh
  5027. Return: BX destroyed
  5028. Program: PCACHE is the resident print spooler portion of PrintCache by
  5029.       LaserTools; it may use either memory or disk space to spool output
  5030. Range:    AH=C0h to AH=FFh, selected by commandline switch
  5031. SeeAlso: AX=C000h"PCACHE"
  5032. --------V-2FC020-----------------------------
  5033. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  5034.     AX = C020h
  5035. Return: AL = 00h if successful
  5036.         BX = VxD API Status
  5037.         0000h no error
  5038.         0001h error
  5039.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  5040.               is running
  5041.         0200h VM API entry point not found (VxD not installed)
  5042. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  5043. Note:    this call resets the VxD API Status to zero
  5044. SeeAlso: AX=1602h,AX=1607h
  5045. Index:    screen saver;AD-DOS
  5046. --------V-2FC04E-----------------------------
  5047. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  5048.     AX = C04Eh
  5049. Return: AL = 4Fh if Explosiv is running but not memory-resident
  5050. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  5051.       by H&G Software (Reidar Gresseth and Chris Hook)
  5052. Range:    AH=C0h to AH=C9h, selected by configuration
  5053. SeeAlso: AX=C050h
  5054. Index:    screen saver;Explosiv
  5055. --------V-2FC050-----------------------------
  5056. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  5057.     AX = C050h
  5058. Return: AL = 51h if installed
  5059.     ---v3.0+ ---
  5060.         BX = interval in clock ticks
  5061.         CH = animation display color (00h mono, 01h tinge, 02h color)
  5062.         CL = animation delay factor
  5063.         DH = animation parameters
  5064.         DL = INT 10 checking (00h on, 01h off)
  5065.         SI = number of bytes available for animation code
  5066.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  5067. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  5068.       by H&G Software (Reidar Gresseth and Chris Hook)
  5069. Range:    AH=C0h to AH=C9h, selected by configuration
  5070. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  5071. SeeAlso: INT 14/AX=AA01h
  5072. Index:    screen saver;Explosiv
  5073. --------V-2FC052-----------------------------
  5074. INT 2F - Explosiv v2.00+ - UNINSTALL
  5075.     AX = C052h
  5076.     DX:BX = address to return to on successful uninstall
  5077. Return: at specified address if successful
  5078.     AL = 53h on error
  5079. Note:    specified return address must have the segment of the caller's PSP
  5080. SeeAlso: AX=C050h
  5081. Index:    screen saver;Explosiv
  5082. --------V-2FC054-----------------------------
  5083. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  5084.     AX = C054h
  5085. Return: AL = delay factor
  5086. SeeAlso: AX=C057h
  5087. Index:    screen saver;Explosiv
  5088. ----------2FC054-----------------------------
  5089. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  5090.     AX = C054h
  5091.     BX = new interval in clock ticks
  5092.     CH = animation display color (00h mono, 01h tinge, 02h color)
  5093.     CL = animation delay factor
  5094.     DH = animation parameters
  5095.     DL = INT 10 checking (00h on, 01h off)
  5096. SeeAlso: AX=C050h
  5097. --------V-2FC055-----------------------------
  5098. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  5099.     AX = C055h
  5100.     BX = new interval in clock ticks
  5101. Index:    screen saver;Explosiv
  5102. --------V-2FC056-----------------------------
  5103. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  5104.     AX = C056h
  5105.     BL = animated display type (00h mono, 01h color)
  5106. SeeAlso: AX=C058h"v2.x"
  5107. Index:    screen saver;Explosiv
  5108. --------V-2FC056-----------------------------
  5109. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  5110.     AX = C056h
  5111.     BX = new state
  5112.         0000h disabled
  5113.         0100h enabled
  5114.         0101h enabled, but never blank
  5115.         0102h enabled, always blank
  5116. --------V-2FC057-----------------------------
  5117. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  5118.     AX = C057h
  5119.     BL = delay factor
  5120. SeeAlso: AX=C054h"v2.x"
  5121. Index:    screen saver;Explosiv
  5122. --------V-2FC058-----------------------------
  5123. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  5124.     AX = C058h
  5125.     BL = animation parameter
  5126. Note:    the animation parameter has different interpretations for each display
  5127. SeeAlso: AX=C056h"v2.x"
  5128. Index:    screen saver;Explosiv
  5129. ----------2FC058-----------------------------
  5130. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  5131.     AX = C058h
  5132.     BX = file handle for file containing display code
  5133.     CX = number of bytes to load
  5134.     DX = offset at which animation code should be loaded
  5135. Return: AL = status (see #1717)
  5136. Note:    if AL=00h-03h on return, the file will be closed
  5137.  
  5138. (Table 1717)
  5139. Values for Explosiv function status:
  5140.  00h    successful
  5141.  01h    code too large to available space
  5142.  02h    no data read, load aborted
  5143.  03h    incomplete load, default blanking display loaded instead
  5144.  58h    unexpected offset in DX
  5145. --------V-2FC059-----------------------------
  5146. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  5147.     AX = C059h
  5148. Note:    clears flag set by AX=C05Ah
  5149. SeeAlso: AX=C05Ah
  5150. Index:    screen saver;Explosiv
  5151. --------V-2FC05A-----------------------------
  5152. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  5153.     AX = C05Ah
  5154.     BL = ???
  5155. Note:    sets flag cleared by AX=C059h then stores BL
  5156. SeeAlso: AX=C059h,AX=C05Bh
  5157. Index:    screen saver;Explosiv
  5158. --------V-2FC05B-----------------------------
  5159. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  5160.     AX = C05Bh
  5161.     BL = animation display
  5162. Note:    this function fails silently if the requested display is not in memory
  5163. SeeAlso: AX=C05Ah,AX=C05Ch
  5164. Index:    screen saver;Explosiv
  5165. --------V-2FC05C-----------------------------
  5166. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  5167.     AX = C05Ch
  5168.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  5169. SeeAlso: AX=C05Bh
  5170. Index:    screen saver;Explosiv
  5171. --------K-2FC0AE-----------------------------
  5172. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  5173.     AX = C0AEh
  5174. Return: AX = 4453h if installed
  5175.     CX = 5259h if installed
  5176. Range:    AH=C0h to AH=FFh, selected by scanning for signature
  5177. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AFh"HP 100LX"
  5178. --------K-2FC0AF-----------------------------
  5179. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - GET BUFFER ADDRESS
  5180.     AX = C0AFh
  5181. Return: ES:DI -> buffer (behind code)
  5182. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  5183. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AEh"HP 100LX"
  5184. --------N-2FC100-----------------------------
  5185. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  5186.     AX = C100h
  5187. Return: AL = FFh if installed
  5188.         ES:SI -> signature string "STP-IPX$"
  5189.         BX = version??? (0001h for v1.00)
  5190.         DI corrupted
  5191. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  5192.       multiplex numbers to find a free one, as LSL does
  5193. SeeAlso: AX=C000h"LSL",AX=C101h
  5194. ----------2FC101-----------------------------
  5195. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  5196.     AX = C101h
  5197. Return: AL = status???
  5198.     BX corrupted
  5199. SeeAlso: AX=C101h
  5200. --------d-2FC300-----------------------------
  5201. INT 2F - SETWPR.COM - INSTALLATION CHECK
  5202.     AX = C300h
  5203. Return: AL = FFh if installed
  5204. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  5205. SeeAlso: AX=C302h"SETWPR"
  5206. --------k-2FC300DX0000-----------------------
  5207. INT 2F U - SpaceManager - INSTALLATION CHECK
  5208.     AX = C300h
  5209.     DX = 0000h
  5210. Return: AL = FFh if any SpaceManager programs installed
  5211.         BX = 6F73h
  5212.         CX = 6F68h
  5213. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  5214.       Systems, Inc.
  5215. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  5216. SeeAlso: AX=C300h/DX=0666h
  5217. --------k-2FC300-----------------------------
  5218. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  5219.     AX = C300h
  5220.     DX = program identifier (see #1718) or 0666h for any SpaceManager prog
  5221.     BX = 4F53h ('OS')
  5222.     CX = 4F48h ('OH')
  5223. Return: AL = FFh if BX/CX as specified and specified program installed
  5224.         BX = 6F73h ('os')
  5225.         CX = 6F68h ('oh')
  5226. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  5227. Note:    this call is chained if BX,CX, or DX are not as specified above
  5228. SeeAlso: AX=C300h/DX=0000h
  5229.  
  5230. (Table 1718)
  5231. Values for SpaceManager program identifier:
  5232.  9000h    SMOUNT (SuperMount)
  5233.  9001h    SELECTC (SelectCompress)
  5234.  9002h    SUPERX (SuperExchange)
  5235.  9003h    FORTUNE (FortuneTeller)
  5236. --------k-2FC301-----------------------------
  5237. INT 2F U - SpaceManager - ???
  5238.     AX = C301h
  5239.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  5240.     ???
  5241. Return: ???
  5242. --------k-2FC302-----------------------------
  5243. INT 2F U - SpaceManager - ENABLE PROGRAM
  5244.     AX = C302h
  5245.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  5246. Return: AX destroyed
  5247. SeeAlso: AX=C303h,AX=C306h
  5248. --------d-2FC302-----------------------------
  5249. INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
  5250.     AX = C302h
  5251.     BL = new state
  5252.         00h disk may be written
  5253.         01h disk write-protected
  5254. Return: AL = FFh if installed
  5255. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  5256. SeeAlso: AX=C300h"SETWPR"
  5257. --------k-2FC303-----------------------------
  5258. INT 2F U - SpaceManager - DISABLE PROGRAM
  5259.     AX = C303h
  5260.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  5261. Return: AX destroyed
  5262. SeeAlso: AX=C302h,AX=C306h
  5263. --------k-2FC304-----------------------------
  5264. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  5265.     AX = C304h
  5266.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  5267. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  5268.     AX destroyed
  5269. --------k-2FC305DX9003-----------------------
  5270. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  5271.     AX = C305h
  5272.     DX = 9003h
  5273. Return: AX destroyed
  5274. --------k-2FC305-----------------------------
  5275. INT 2F U - SpaceManager - ???
  5276.     AX = C305h
  5277.     DX = program identifier (9000h,9001h) (see #1718)
  5278.     ???
  5279. Return: ???
  5280. --------k-2FC306-----------------------------
  5281. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  5282.     AX = C306h
  5283.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  5284. Return: AL = current state (00h disabled, FAh enabled)
  5285.     AH destroyed
  5286. SeeAlso: AX=C302h,AX=C303h
  5287. --------k-2FC307DX9001-----------------------
  5288. INT 2F U - SpaceManager - SELECTC - ???
  5289.     AX = C307h
  5290.     DX = 9001h
  5291.     BX = ???
  5292.     CX = ???
  5293.     ???
  5294. Return: ???
  5295. --------k-2FC308DX9001-----------------------
  5296. INT 2F U - SpaceManager - SELECTC - ???
  5297.     AX = C308h
  5298.     DX = 9001h
  5299.     ???
  5300. Return: ???
  5301. --------d-2FC64CBX5553-----------------------
  5302. INT 2F U - Smart Prompt - INSTALLATION CHECK
  5303.     AX = C64Ch
  5304.     BX = 5553h
  5305. Return: AX = 4CC6h if installed
  5306.     BX = 5355h if installed
  5307. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  5308.       an immediate flush of SmartDrive's (and compatible caches') buffers
  5309.       on returning to the DOS prompt
  5310. --------V-2FC700CX434C-----------------------
  5311. INT 2F u - COLAP - INSTALLATION CHECK
  5312.     AX = C700h
  5313.     CX = 434Ch  "CL"
  5314. Return: AL = FFh if installed
  5315. Program: colap.com is a freeware TSR by Eric Meyer which controls contrast
  5316.       and brightness of color laptops by changing the VGA palette colors;
  5317.       for Toshiba laptops there are more hotkeys for shutting off display
  5318.       and harddisk.
  5319. --------v-2FC900BP0000-----------------------
  5320. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  5321.     AX = C900h
  5322.     BP = 0000h
  5323. Return: AL = FFh if installed
  5324.         BP >= 0014h
  5325. Note:    called by TBSCANX
  5326. SeeAlso: AX=C987h,AX=CA00h
  5327. --------v-2FC987-----------------------------
  5328. INT 2F U - ThunderByte??? - DISINFECT FILE???
  5329.     AX = C987h
  5330.     BX:DX -> filename
  5331.     BX:CX -> virus name
  5332. Return: AX = status
  5333.         0000h successful???
  5334. Note:    called by TBSCANX
  5335. SeeAlso: AX=CA00h
  5336. --------r-2FC9FF-----------------------------
  5337. INT 2F C - StackMan - INSTALLATION BROADCAST
  5338.     AX = C9FFh
  5339.     BL = BCD version number
  5340.     CX = number of stacks
  5341.     DX = stack size in bytes
  5342. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  5343.       which functions as a replacement for the DOS STACK= command as well
  5344.       as permitting multiple TSRs to share a pool of stack space
  5345. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  5346.       its API is available
  5347.     the installation check consists of testing for the string "STACKXXX" at
  5348.       offset 0Ah from the INT B4 handler
  5349. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  5350. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  5351. --------F-2FCA-------------------------------
  5352. INT 2F - FAXPLUS - FAX TSR
  5353.     AH = CAh
  5354.     ???
  5355. Return: ???
  5356. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  5357.       Veldman
  5358. SeeAlso: AH=2Ah"Gammafax"
  5359. --------v-2FCA00BX5442-----------------------
  5360. INT 2F - TBSCANX - INSTALLATION CHECK
  5361.     AX = CA00h
  5362.     BX = 5442h ('TB')
  5363. Return: AL = state
  5364.         00h not installed
  5365.         FFh installed
  5366.         BX = 7462h ('tb') if BX was 5442h on entry
  5367. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  5368. Note:    programs may perform virus checks on themselves, other program files,
  5369.       or their data files by invoking the TBSCANX API.
  5370. SeeAlso: AX=4653h,AX=C900h
  5371. --------v-2FCA01-----------------------------
  5372. INT 2F - TBSCANX - GET STATUS
  5373.     AX = CA01h
  5374. Return: AH = BCD version number (v2.2+)
  5375.         CAh for versions before 2.2
  5376.     AL = state (00h = disabled, 01h = enabled)
  5377.     CX = number of signatures which will be searched
  5378. ---v2.0---
  5379.     BX = EMS handle, 0000h if not using EMS
  5380. ---v2.3+---
  5381.     BX = segment of swap area, 0000h if not swapped
  5382.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  5383. SeeAlso: AX=CA02h
  5384. --------v-2FCA02-----------------------------
  5385. INT 2F - TBSCANX - SET STATE
  5386.     AX = CA02h
  5387.     BL = new state (00h = disabled, 01h = enabled)
  5388. SeeAlso: AX=CA01h
  5389. --------v-2FCA03-----------------------------
  5390. INT 2F - TBSCANX - SCAN BUFFER
  5391.     AX = CA03h
  5392.     CX = size of buffer
  5393.     DS:DX -> buffer containing data to scan
  5394. Return: CF clear if no virus signatures found
  5395.         BX,ES destroyed
  5396.     CF set if signature found
  5397.         ES:BX -> ASCIZ virus name (v2.3+)
  5398.         DS:DX -> ASCIZ virus name (v2.0)
  5399.     AX,CX,DX destroyed (v2.3+)
  5400.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  5401. SeeAlso: AX=CA04h
  5402. --------v-2FCA04-----------------------------
  5403. INT 2F - TBSCANX - SCAN FILE
  5404.     AX = CA04h
  5405.     DS:DX -> filename
  5406. Return: CF clear if no virus signatures found
  5407.         BX,ES destroyed
  5408.     CF set if signature found
  5409.         ES:BX -> ASCIZ virus name
  5410.     AX,CX,DX destroyed
  5411. Note:    this function requires at least 4K free memory
  5412. SeeAlso: AX=CA03h
  5413. --------U-2FCAFEBX0000-----------------------
  5414. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  5415.     AX = CAFEh
  5416.     BX = 0000h
  5417. Return: BX = segment of resident code if installed
  5418.         0000h if not installed
  5419. SeeAlso: AX=5453h,INT 2D"AMIS"
  5420. --------F-2FCB00-----------------------------
  5421. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  5422.     AX = CB00h
  5423. Return: AL = status
  5424.         00h not installed, OK to install
  5425.         01h not installed, not OK to install
  5426.         FFh installed
  5427. Note:    AH = CBh is the default identifier, but may be reconfigured
  5428. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  5429. --------F-2FCB00BX4D53-----------------------
  5430. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  5431.     AX = CB00h
  5432.     BX = 4D53h ('MS')
  5433.     CX = 4949h ('II')
  5434. Return: AL = status
  5435.         00h not installed, OK to install
  5436.         01h not installed, not OK to install
  5437.         FFh installed
  5438.         BX = 6D73h ('ms')
  5439.         CX = 6969h ('ii')
  5440. Note:    this function is equivalent to the standard CASMGR installation check,
  5441.       but uses the additional magic values to identify which CAS is
  5442.       installed
  5443. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  5444. --------F-2FCB01-----------------------------
  5445. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  5446.     AX = CB01h
  5447.     DS:DX -> ASCIZ name of task control file
  5448. Return: AX >= 0: event handle
  5449.     AX < 0: two's complement of error code (see #1719)
  5450. Note:    files needed for an event must be kept until task is complete or error
  5451. SeeAlso: AX=CB0Bh,AX=CB15h
  5452.  
  5453. (Table 1719)
  5454. Values for CAS error code:
  5455.   (AH = class, AL = subcode, value passed back is 2's complement)
  5456.   Class 00h    --- FAX warnings
  5457.     Subcode 00h    no error
  5458.         02h    bad scanline count
  5459.         03h    page sent with errors, could not retransmit
  5460.         04h    received data lost
  5461.         05h    invalid or missing logo file
  5462.         06h    filename does not match nonstandard format (NSF) header
  5463.         07h    file size does not match NSF header
  5464.   Class 01h    --- DOS warnings (data was sent)
  5465.     Subcode 01h    invalid function
  5466.         05h    access denied
  5467.         06h    invalid handle
  5468.         others    see INT 21/AH=59h
  5469.   Class 02h    --- fatal errors (data not sent)
  5470.     Subcode 00h    multiplex handler failed
  5471.         01h    unknown command
  5472.         02h    bad event handle
  5473.         03h    FIND NEXT attempted before FIND FIRST
  5474.         04h    no more events
  5475.         07h    invalid queue type
  5476.         08h    bad control file
  5477.         09h    communication board busy
  5478.         0Ah    invalid command parameter
  5479.         0Bh    can't uninstall resident code
  5480.         0Ch    file exists
  5481.         80h    unknown task type
  5482.         81h    bad phone number
  5483.         82h    bad .PCX file header
  5484.         83h    unexpected EOF
  5485.         84h    unexpected disconnect
  5486.         85h    too many dialing retries
  5487.         86h    no file specified for send
  5488.         87h    communication board timeout
  5489.         88h    received too many pages (>1023) of data
  5490.         89h    manual connect initiated too long ago
  5491.         8Ah    hardware command set error
  5492.         8Bh    bad NonStandard Format (NSF) header file
  5493.   Class 03h    --- fatal DOS errors
  5494.     Subcode 02h    file not found
  5495.         03h    path not found
  5496.         others    see INT 21/AH=59h
  5497.   Class 04h    --- FAX errors
  5498.     Subcode 01h    remote unit not Group 3 compatible
  5499.         02h    remote unit did not send capabilities
  5500.         03h    other FAX machine incompatible
  5501.         04h    other FAX incapable of file transfers
  5502.         05h    exceeded retrain or FAX resend limit
  5503.         06h    line noise or failure to agree on bit rate
  5504.         07h    remote disconnected after receiving data
  5505.         08h    no response from remote after sending data
  5506.         09h    remote's capabilities incompatible
  5507.         0Ah    no dial tone (v1.2+)
  5508.         0Bh    invalid response from remote unit after sending data
  5509.         0Dh    phone line dead or remote unit disconnected
  5510.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  5511.         11h    invalid command from remote after receiving data
  5512.         15h    tried to receive from incompatible hardware
  5513.         5Ch    received data overflowed input buffer
  5514.         5Dh    remote unexpectedly stopped sending data
  5515.         5Eh    other FAX machine jammed (no data sent)
  5516.         5Fh    remote took too long to send fax scan line
  5517.         63h    can't get through to remote unit
  5518.         64h    user canceled event
  5519.   Class 05h    --- application-specific (v1.2+)
  5520.   ---Intel FAXPOP.EXE
  5521.     Subcode 00h    tried to send while in graphics mode
  5522.         01h    insufficient disk space
  5523.         02h    internal buffer overflow
  5524.   Class 06h    --- CAS implementation-specific (v1.2+)
  5525. --------F-2FCB02-----------------------------
  5526. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  5527.     AX = CB02h
  5528. Return: AX >= 0: event handle of aborted event
  5529.     AX < 0: error code (see #1719)
  5530. Note:    termination could take up to 30 seconds
  5531. SeeAlso: AX=CB08h,AX=CB10h
  5532. --------F-2FCB05-----------------------------
  5533. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  5534.     AX = CB05h
  5535.     CX = status of events to find
  5536.         0000h successful completion
  5537.         0001h waiting to be processed
  5538.         0002h number has been dialed
  5539.         0003h connection established, sending
  5540.         0004h connection established, receiving
  5541.         0005h event aborted
  5542.         FFFFh find any event, regardless of status
  5543.         other negative values, match error code
  5544.     DH = direction
  5545.         00h chronological order, earliest to latest
  5546.         01h reverse chronological order, latest to earliest
  5547.     DL = queue to search
  5548.         00h task queue
  5549.         01h receive queue
  5550.         02h log queue
  5551. Return: AX = 0000h successful
  5552.         BX = event handle for found event
  5553.     AX < 0       error code (see #1719)
  5554. SeeAlso: AX=CB06h,AX=CB07h
  5555. --------F-2FCB06-----------------------------
  5556. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  5557.     AX = CB06h
  5558.     DL = queue to search
  5559.         00h task queue
  5560.         01h receive queue
  5561.         02h log queue
  5562. Return: AX = 0000h successful
  5563.         BX = event handle for found event
  5564.     AX < 0       error code (see #1719)
  5565. Note:    direction of search is same as preceding FIND FIRST call
  5566. SeeAlso: AX=CB05h
  5567. --------F-2FCB07-----------------------------
  5568. INT 2F - Communicating Applications Specification - OPEN FILE
  5569.     AX = CB07h
  5570.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  5571.     CX = receive file number (ignored for task queue and log queue)
  5572.         0000h  open receive control file
  5573.         N       open Nth received data file
  5574.     DL = queue
  5575.         00h task queue
  5576.         01h receive queue control file or received file, as given by CX
  5577.         02h log queue
  5578.         03h group file in task queue (v1.2+)
  5579.         04h group file in log queue (v1.2+)
  5580. Return: AX = 0000h successful
  5581.         BX = DOS file handle for requested file
  5582.     AX < 0       error code (see #1719)
  5583. Note:    the returned file handle has been opened in read-only mode and should
  5584.       be closed with INT 21/AH=3Eh after use
  5585. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  5586. --------F-2FCB08-----------------------------
  5587. INT 2F - Communicating Applications Specification - DELETE FILE
  5588.     AX = CB08h
  5589.     BX = event handle
  5590.     CX = receive file number
  5591.         0000h delete ALL received files and receive control file
  5592.         N      delete Nth received file
  5593.     DL = queue
  5594.         00h delete control file in task queue and corresponding group file
  5595.           if it exists
  5596.         01h delete file in receive queue, as given by CX
  5597.         02h delete control file in log queue (individual deletions not
  5598.           recommended, to maintain integrity of log) and corresponding
  5599.           group file if it exists
  5600. Return: AX = 0000h successful
  5601.     AX < 0       error code (see #1719)
  5602. SeeAlso: AX=CB02h,AX=CB09h
  5603. --------F-2FCB09-----------------------------
  5604. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  5605.     AX = CB09h
  5606.     DL = queue
  5607.         00h delete all control files in task queue, including all group
  5608.           files
  5609.         01h delete all files in receive queue
  5610.         02h delete all control files in log queue, including all group
  5611.           files
  5612. Return: AX = 0000h successful
  5613.     AX < 0       error code (see #1719)
  5614. SeeAlso: AX=CB08h
  5615. --------F-2FCB0A-----------------------------
  5616. INT 2F - Communicating Applications Specification - GET EVENT DATE
  5617.     AX = CB0Ah
  5618.     BX = event handle
  5619.     DL = queue
  5620.         00h task queue
  5621.         01h receive queue
  5622.         02h log queue
  5623. Return: AX = 0000h successful
  5624.         CX = year
  5625.         DH = month
  5626.         DL = day
  5627.     AX < 0       error code (see #1719)
  5628. SeeAlso: AX=CB0Bh,AX=CB0Ch
  5629. --------F-2FCB0B-----------------------------
  5630. INT 2F - Communicating Applications Specification - SET TASK DATE
  5631.     AX = CB0Bh
  5632.     BX = event handle (task event only)
  5633.     CX = year
  5634.     DH = month
  5635.     DL = day
  5636. Return: AX = 0000h successful
  5637.     AX < 0       error code (see #1719)
  5638. Note:    setting a task's date and time to before the current date and time
  5639.       causes it to execute immediately
  5640. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  5641. --------F-2FCB0C-----------------------------
  5642. INT 2F - Communicating Applications Specification - GET EVENT TIME
  5643.     AX = CB0Ch
  5644.     BX = event handle
  5645.     DL = queue
  5646.         00h task queue
  5647.         01h receive queue
  5648.         02h log queue
  5649. Return: AX = 0000h successful
  5650.         CH = hour
  5651.         CL = minute
  5652.         DH = second
  5653.         DL = 00h
  5654.     AX < 0       error code (see #1719)
  5655. SeeAlso: AX=CB0Ah,AX=CB0Dh
  5656. --------F-2FCB0D-----------------------------
  5657. INT 2F - Communicating Applications Specification - SET TASK TIME
  5658.     AX = CB0Dh
  5659.     BX = event handle (task events only)
  5660.     CH = hour
  5661.     CL = minute
  5662.     DH = second
  5663.     DL unused
  5664. Return: AX = 0000h successful
  5665.     AX < 0       error code (see #1719)
  5666. Note:    setting a task's date and time to before the current date and time
  5667.       causes it to execute immediately
  5668. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  5669. --------F-2FCB0E-----------------------------
  5670. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  5671.     AX = CB0Eh
  5672.     DS:DX -> 256-byte buffer for external data block (see #1720)
  5673. Return: AX = 0000h successful
  5674.         DS:DX buffer filled
  5675.     AX < 0       error code (see #1719)
  5676.  
  5677. Format of CAS external data block:
  5678. Offset    Size    Description    (Table 1720)
  5679.  00h    BYTE    CAS major version
  5680.  01h    BYTE    CAS minor version
  5681.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  5682.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  5683.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  5684.  60h 32 BYTEs    ASCIZ default sender name
  5685.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  5686.  95h 107 BYTEs    reserved
  5687. --------F-2FCB0F-----------------------------
  5688. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  5689.     AX = CB0Fh
  5690.     DL = subfunction
  5691.         00h get current autoreceive state
  5692.         01h set autoreceive state
  5693.         DH = number of rings before answer, 00h = never
  5694. Return: AX = 0000h autoreceive disabled
  5695.     AX = N       number of rings before answer
  5696.     AX < 0       error code (see #1719)
  5697. --------F-2FCB10-----------------------------
  5698. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  5699.     AX = CB10h
  5700.     DS:DX -> 512-byte buffer for status area (see #1722)
  5701. Return: AX = 0000h successful
  5702.         BX = event handle of current event or negative error code if
  5703.               no current event
  5704.         buffer filled
  5705.     AX < 0       error code (see #1719)
  5706. SeeAlso: AX=CB02h,AX=CB0Dh
  5707.  
  5708. (Table 1721)
  5709. Values for CAS event type:
  5710.  00h    send
  5711.  01h    receive
  5712.  02h    polled send
  5713.  03h    polled receive
  5714.  04h to 7Fh reserved
  5715.  FFh    serious hardware error
  5716.  
  5717. Format of CAS status area:
  5718. Offset    Size    Description    (Table 1722)
  5719.  00h    BYTE    event type (see #1721)
  5720.  01h    BYTE    transfer type
  5721.         00h 200x200 dpi, FAX mode
  5722.         01h 100x200 dpi, FAX mode
  5723.         02h file transfer mode
  5724.         03h to 7Fh reserved
  5725.  02h    WORD    event status (see #1723)
  5726.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  5727.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  5728.  08h    WORD    number of files to transfer, max 7FFFh
  5729.  0Ah    WORD    offset of file transfer record
  5730.  0Ch 47 BYTEs    ASCIZ phone number to call
  5731.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  5732.  7Bh    BYTE    reserved (00h)
  5733.  7Ch    BYTE    connect time, seconds
  5734.  7Dh    BYTE    connect time, minutes
  5735.  7Eh    BYTE    connect time, hours
  5736.  7Fh    DWORD    total number of pages in all files
  5737.  83h    DWORD    pages already transmitted
  5738.  87h    WORD    number of files already transmitted
  5739.  89h    BYTE    cover page flag
  5740.         00h don't transmit cover page
  5741.         01h transmit cover page
  5742.         02h to 7Fh reserved
  5743.  8Ah    WORD    total number of transmission errors
  5744.  8Ch 78 BYTEs    reserved (zeros)
  5745.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  5746.  EFH 32 BYTEs    ASCIZ destination name
  5747. 10Fh 32 BYTEs    ASCIZ sender name
  5748. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  5749. 17Fh 128 BYTEs    file transfer record for current event (see #1724)
  5750.  
  5751. (Table 1723)
  5752. Values for CAS event status:
  5753.  0000h    completed successfully
  5754.  0001h    waiting
  5755.  0002h    number dialed
  5756.  0003h    connected, sending
  5757.  0004h    connected, receiving
  5758.  0005h    aborted
  5759.  0006h to 007Fh reserved
  5760.  0080h to 7FFFh application-specific events
  5761.  8000h to FFFFh error codes
  5762.  
  5763. Format of CAS file transfer record:
  5764. Offset    Size    Description    (Table 1724)
  5765.  00h    BYTE    file type (ignored unless FAX)
  5766.         00h ASCII
  5767.         01h PCX
  5768.         02h DCX
  5769.         03h to 7Fh reserved
  5770.  01h    BYTE    text size for ASCII FAX file
  5771.         00h = 80 columns by 66 lines (11 inches)
  5772.         01h = 132 columns by 88 lines (11 inches)
  5773.         02h to 7Fh reserved
  5774.  02h    BYTE    status of file
  5775.         00h untouched
  5776.         01h opened
  5777.         02h moved
  5778.         03h deleted
  5779.         04h not yet received
  5780.         05h to 7Fh reserved
  5781.  03h    DWORD    bytes already transmitted
  5782.  07h    DWORD    file size in bytes
  5783.  0Bh    WORD    pages alread transmitted
  5784.  0Dh    WORD    number of pages in file
  5785.  0Fh 80 BYTEs    ASCIZ filename
  5786.  5Fh    BYTE    1/8 inch page length
  5787.         if page length below set to 01h through 7Fh, this value
  5788.           specifies additional 1/8 inch increments to page length
  5789.  60h    BYTE    page length
  5790.         00h = 11 inches
  5791.         01h to 7Fh = page length is this number of inches plus value of
  5792.               1/8 inch field above
  5793.         80h to FEh reserved
  5794.         FFh = ASCII pages ending with formfeed
  5795.  61h 31 BYTEs    reserved (zeros)
  5796. --------F-2FCB11-----------------------------
  5797. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  5798.     AX = CB11h
  5799.     DL = queue to get status of
  5800.         00h task queue
  5801.         01h receive queue
  5802.         02h log queue
  5803.         03h send events (v1.2+)
  5804.         04h receive events (v1.2+)
  5805. Return: AX >= 0     total number of changes made to queue, modulo 32768
  5806.         BX = number of control files currently in queue
  5807.         CX = number of received files (zero for task and log queues)
  5808.     AX < 0    error code (see #1719)
  5809. SeeAlso: AX=CB12h
  5810. --------F-2FCB11DL03-------------------------
  5811. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  5812.     AX = CB11h
  5813.     DL = 03h
  5814. Return: AX = number of successful sends since resident manager started
  5815.     BX = number of unsuccessful sends, including warnings
  5816. SeeAlso: AX=CB11h/DL=04h
  5817. --------F-2FCB11DL04-------------------------
  5818. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  5819.     AX = CB11h
  5820.     DL = 04h
  5821. Return: AX = number of received file events since resident manager started
  5822.     BX = number of received FAX events
  5823. SeeAlso: AX=CB11h/DL=03h
  5824. --------F-2FCB12-----------------------------
  5825. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  5826.     AX = CB12h
  5827.     DS:DX -> 128-byte status buffer (see #1725,#1727)
  5828. Return: AX = 0000h successful
  5829.         DS:DX buffer filled with hardware-dependent status information
  5830.        < 0       error code (see #1719)
  5831. SeeAlso: AX=CB10h,AX=CB11h
  5832.  
  5833. Format of status buffer for Intel Connection CoProcessor:
  5834. Offset    Size    Description    (Table 1725)
  5835.  00h    BYTE    Connection CoProcessor connection status flags (see #1728)
  5836.  01h    BYTE    number of kilobytes of free buffer space
  5837.  02h    BYTE    page buffer status
  5838.         bit 7: Connection CoProcessor has documents to send
  5839.         bits 6-0: number of pages in buffer
  5840.  03h    BYTE    number of retries left for dialing number
  5841.  04h    BYTE    page number to retransmit
  5842.  05h    BYTE    communications status (see #1729)
  5843.  06h    BYTE    baud rate (see #1726)
  5844.  07h  3 BYTEs    reserved
  5845.  0Ah    BYTE    Connection CoProcessor hardware status (see #1730)
  5846.  0Bh    BYTE    Connection CoProcessor switch states (see #1731)
  5847.  0Ch    BYTE    communications flags (see #1732)
  5848.  0Dh    BYTE    reserved
  5849.  0Eh    WORD    error count (only valid while busy, reset when idle)
  5850.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  5851.  14h    BYTE    'A' if Connection CoProcessor board present
  5852.  15h  9 BYTEs    reserved
  5853.  1Eh 21 BYTEs    ASCIZ CCITT identification
  5854.  33h 77 BYTEs    reserved
  5855. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  5856.       by examining the byte at offset 14h
  5857.  
  5858. Bitfields for Connection CoProcessor baud rate:
  5859. Bit(s)    Description    (Table 1726)
  5860.  7    reserved
  5861.  6-4    baud rate
  5862.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  5863.     100 = 2400 baud (V.27 ter)
  5864.     101 = 4800 baud (V.27 ter)
  5865.     110 = 7200 baud (V.29)
  5866.     111 = 9600 baud (V.29)
  5867.  3-0    reserved, should be 0110
  5868.  
  5869. Format of status buffer for Intel SatisFAXtion board:
  5870. Offset    Size    Description    (Table 1727)
  5871.  00h    BYTE    SatisFAXtion connection status flags (see #1733)
  5872.  01h    BYTE    SatisFAXtion board state (see #1734)
  5873.  02h    BYTE    number of KB free in buffer
  5874.  03h    BYTE    number of pages or files in buffer
  5875.  04h    BYTE    number of redials remaining on current number
  5876.  05h    BYTE    FAX page number to retransmit
  5877.  06h    BYTE    current page/file in block transfer
  5878.  07h    BYTE    number of rings received (only if auto-answer enabled)
  5879.  08h    WORD    error count
  5880.  0Ah    DWORD    length of file being transferred
  5881.  0Eh  6 BYTEs    reserved
  5882.  14h    BYTE    'B' if SatisFAXtion board present
  5883.  15h 13 BYTEs    ASCIZ transfer agent name
  5884.  22h  5 BYTEs    ASCIZ transfer agent version number
  5885.  27h 13 BYTEs    ASCIZ resident loader name
  5886.  34h  5 BYTEs    ASCIZ resident loader version number
  5887.  39h 21 BYTEs    ASCIZ remote CSID
  5888.  4Eh 13 BYTEs    ASCIZ resident manager name
  5889.  5Bh  5 BYTEs    ASCIZ resident manager version number
  5890.  60h 32 BYTEs    reserved
  5891. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  5892.       by examining the byte at offset 14h
  5893.  
  5894. Bitfields for Connection CoProcessor connection status flags:
  5895. Bit(s)    Description    (Table 1728)
  5896.  7    hardware busy sending or receiving
  5897.  6    last page of data
  5898.  5    no data on current page
  5899.  4    retransmit request for current page being transmitted
  5900.  3    NSF (nonstandard file) mode active
  5901.  2-0    reserved
  5902.  
  5903. Bitfields for communications status:
  5904. Bit(s)    Description    (Table 1729)
  5905.  7    originating call
  5906.  6    FAX message to be sent
  5907.  5    on line
  5908.  4    ring detected and receive enabled
  5909.  3    buffer dumped on receive
  5910.  2-0    hardware sequence state
  5911.     000 idle
  5912.     001 dial
  5913.     010 answer
  5914.     011 transmit
  5915.     100 receive
  5916.     101 pre-message
  5917.     110 post-message
  5918.     111 disconnect
  5919.  
  5920. Bitfields for Connection CoProcessor hardware status:
  5921. Bit(s)    Description    (Table 1730)
  5922.  7    modem option installed
  5923.  6    Connection CoProcessor has control of DAA (not latched)
  5924.  5    on line (not latched)
  5925.  4    ring detected (not latched)
  5926.  3    data in command buffer (not latched)
  5927.  2    set if using DMA channel 1, clear if using DMA channel 3
  5928.  1    line length compensation 1 set (not latched)
  5929.  0    line length compensation 0 set (not latched)
  5930.  
  5931. Bitfields for Connection CoProcessor switch states:
  5932. Bit(s)    Description    (Table 1731)
  5933.  7    reserved
  5934.  6    unused
  5935.  5    spare switch open
  5936.  4    FAX ADR1 switch open
  5937.  3    FAX ADR0 switch open
  5938.  2    alternate interrupt switch open
  5939.  1    COM SEL 1 switch open
  5940.  0    COM SEL 0 switch open
  5941. Note:    valid combinations of 0-2 are
  5942.     000  COM2 IRQ3 IObase 2F8h
  5943.     001  COM1 IRQ4 IObase 3F8h
  5944.     010  COM4 IRQ3 IObase 2E8h
  5945.     011  COM3 IRQ4 IObase 3E8h
  5946.     110  COM4 IRQ2 IObase 2E8h
  5947.     111  COM3 IRQ5 IObase 3E8h
  5948.  
  5949. Bitfields for communications flags:
  5950. Bit(s)    Description    (Table 1732)
  5951.  7    reserved
  5952.  6    auxiliary relay forced ON
  5953.  5    modem select relay forced ON
  5954.  4    offhook relay forced ON
  5955.  3    9600 bps enabled
  5956.  2    7200 bps enabled
  5957.  1    4800 bps enabled
  5958.  0    2400 bps enabled
  5959.  
  5960. Bitfields for SatisFAXtion connection status flags:
  5961. Bit(s)    Description    (Table 1733)
  5962.  7    busy in T.30 CCITT fax protocol
  5963.  6    data on current page/file (only used for block xfers)
  5964.  5    retransmission of last page requested
  5965.  4    in file transfer mode
  5966.  3    data in buffer
  5967.  2    data buffer dumped on receive
  5968.  1    200x100 dpi resolution instead of 200x200 dpi
  5969.  0    data modem in use, FAX image modem not available
  5970.  
  5971. Bitfields for SatisFAXtion board state:
  5972. Bit(s)    Description    (Table 1734)
  5973.  7    reserved
  5974.  6    handset jack active, data and FAX modems not available
  5975.  5-3    current rate
  5976.     000  300 bps (V.21 HDLC)
  5977.     100 2400 bps (V.27 ter)
  5978.     101 4800 bps (V.27 ter)
  5979.     110 7200 bps (V.29)
  5980.     111 9600 bps (V.29)
  5981.  2-0    T.30 CCITT protocol state
  5982.     000 idle
  5983.     001 dialing
  5984.     010 answering
  5985.     011 transmitting
  5986.     100 receiving
  5987.     101 pre-message
  5988.     110 post-message
  5989.     111 disconnect
  5990. --------F-2FCB13DL00-------------------------
  5991. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  5992.     AX = CB13h
  5993.     DL = 00h
  5994. Return: AX = 0040h in progress
  5995.        >= 0       passed
  5996.        < 0       hardware-dependent failure code (see #1735,#1736)
  5997. SeeAlso: AX=CB13h/DL=01h
  5998.  
  5999. Bitfields for Intel Connection CoProcessor failure codes:
  6000. Bit(s)    Description    (Table 1735)
  6001.  3    9600 bps FAX modem module failed
  6002.  2    SDLC chip failed
  6003.  1    RAM failed
  6004.  0    ROM checksum failed
  6005.  
  6006. Bitfields for Intel SatisFAXtion failure codes:
  6007. Bit(s)    Description    (Table 1736)
  6008.  1    2400 bps data modem failed
  6009.  0    9600 bps FAX modem failed
  6010. --------F-2FCB13DL01-------------------------
  6011. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  6012.     AX = CB13h
  6013.     DL = 01h
  6014. Return: AX = 0000h successfully started
  6015.     AX < 0       error code (see #1719)
  6016. SeeAlso: AX=CB13h/DL=00h
  6017. --------F-2FCB14-----------------------------
  6018. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  6019.     AX = CB14h
  6020.     BX = event handle
  6021.     CX = receive file number
  6022.         0001h first received file
  6023.         N      Nth received file
  6024.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  6025. Return: AX = 0000h successful
  6026.     AX < 0       error code (see #1719)
  6027. --------F-2FCB15-----------------------------
  6028. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  6029.     AX = CB15h
  6030.     DS:DX -> variable-length data area (see #1737)
  6031. Return: AX >= 0 event handle
  6032.     AX < 0    error code (see #1719)
  6033. SeeAlso: AX=CB01h
  6034.  
  6035. Format of CAS file submission data area:
  6036. Offset    Size    Description    (Table 1737)
  6037.  00h    BYTE    transfer type
  6038.         00h = 200x200 dpi, fax mode
  6039.         01h = 100x200 dpi, fax mode
  6040.         02h = file transfer mode
  6041.         03h to 7Fh reserved
  6042.  01h    BYTE    text size
  6043.         00h = 80 columns
  6044.         01h = 132 columns
  6045.         02h to 7Fh reserved
  6046.  02h    WORD    time to send (DOS packed time, see #0876 at INT 21/AX=5700h)
  6047.  04h    WORD    date to send (DOS packed date, see #0877 at INT 21/AX=5700h)
  6048.  06h 32 BYTEs    ASCIZ destination name
  6049.  26h 80 BYTEs    ASCIZ name of file to send
  6050.  76h 47 BYTEs    ASCIZ phone number to dial
  6051.  A5h 64 BYTEs    ASCIZ application-specific tag string
  6052.  E5h    BYTE    reserved (00h)
  6053.  E6h    BYTE    cover page
  6054.         00h don't send cover page
  6055.         01h send cover page
  6056.         02h to 7Fh reserved
  6057.  E7h 23 BYTEs    reserved (zeros)
  6058.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  6059.         set to 01h)
  6060. --------F-2FCB16BX1234-----------------------
  6061. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  6062.     AX = CB16h
  6063.     BX = 1234h
  6064.     CX = 5678h
  6065.     DX = 9ABCh
  6066. Return: AX = 0000h successful
  6067.     AX < 0       error code
  6068. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  6069. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  6070. Index:    uninstall;CAS Manager
  6071. --------F-2FCB17-----------------------------
  6072. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  6073.     AX = CB17h
  6074.     BX = event handle
  6075.     CL = cover page status
  6076.         00h not read
  6077.         01h read by user
  6078. Return: AX = 0000h successful
  6079.     AX < 0       error code
  6080. --------F-2FCB80-----------------------------
  6081. INT 2F - Intel SatisFAXtion CASMGR - ???
  6082.     AX = CB80h
  6083.     ???
  6084. Return: ???
  6085. --------F-2FCB81-----------------------------
  6086. INT 2F - Intel SatisFAXtion CASMGR - ???
  6087.     AX = CB81h
  6088.     ???
  6089. Return: ???
  6090. --------F-2FCB82-----------------------------
  6091. INT 2F - Intel SatisFAXtion CASMGR - ???
  6092.     AX = CB82h
  6093.     ???
  6094. Return: ???
  6095. --------F-2FCBDCBL56-------------------------
  6096. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  6097.     AX = CBDCh
  6098.     BL = 56h
  6099.     BH = line number (starts with 1)
  6100.     CX:DX -> 32-byte status buffer or 80 character string
  6101. Return: AX = number of cards installed, or FFFFh on error
  6102. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  6103.       performance multi-card FAX solution for OEMs.
  6104. Note:    defaults to AH=CBh but can be changed
  6105. SeeAlso: AX=CBDDh,AX=DA00h
  6106. --------F-2FCBDDBL56-------------------------
  6107. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  6108.     AX = CBDDh
  6109.     BL = 56h
  6110.     BH = ?
  6111.     CX:DX -> command to execute
  6112. Return: AX = status
  6113.         0000h success
  6114.         FFFFh on error
  6115. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  6116. --------c-2FCC--SI5453-----------------------
  6117. INT 2F U - PC-Kwik Programs - API
  6118.     AH = CCh
  6119.     SI = 5453h or 7473h
  6120.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  6121.     DL = program identifier (see #1738)
  6122. Return: SI = 7473h
  6123.     other registers vary by function
  6124. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  6125.       thus supports this call
  6126. SeeAlso: INT 21/AH=2Bh/CX=4358h
  6127.  
  6128. (Table 1738)
  6129. Values for PC-Kwik program identifier:
  6130.  00h    all installed PowerPak programs
  6131.  01h    SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  6132.  02h    PCKSPL (print spooler)
  6133.  04h    PCKSCRN (screen accelerator)
  6134.  05h    PCKKEY (keyboard enhancer)
  6135.  06h    PCKRAMD (RAM disk)
  6136.  08h    PCKWIK.SYS
  6137.  10h    PCKCDROM (CD-ROM support for SUPERPCK)
  6138. --------N-2FCC00-----------------------------
  6139. INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
  6140.     AX = CC00h
  6141. Return: AX = 7777h
  6142.     BX = ???
  6143.     CX = ???
  6144.     DX = ???
  6145.     ES = data segment of resident portion
  6146. SeeAlso: AX=CC01h,AX=CC06h
  6147. --------N-2FCC01-----------------------------
  6148. INT 2F - Tsoft NFSDRVR - ???
  6149.     AX = CC01h
  6150.     ???
  6151. Return: ???
  6152. SeeAlso: AX=CC00h
  6153. --------N-2FCC02-----------------------------
  6154. INT 2F - Tsoft NFSDRVR - ???
  6155.     AX = CC02h
  6156.     ???
  6157. Return: ???
  6158. SeeAlso: AX=CC00h
  6159. --------N-2FCC03-----------------------------
  6160. INT 2F - Tsoft NFSDRVR - ???
  6161.     AX = CC03h
  6162.     ???
  6163. Return: ???
  6164. SeeAlso: AX=CC00h
  6165. --------N-2FCC04-----------------------------
  6166. INT 2F - Tsoft NFSDRVR - ???
  6167.     AX = CC04h
  6168.     ???
  6169. Return: ???
  6170. SeeAlso: AX=CC00h
  6171. --------N-2FCC05-----------------------------
  6172. INT 2F - Tsoft NFSDRVR - ???
  6173.     AX = CC05h
  6174.     ???
  6175. Return: ???
  6176. SeeAlso: AX=CC00h
  6177. --------N-2FCC06-----------------------------
  6178. INT 2F - Tsoft NFSDRVR - ???
  6179.     AX = CC06h
  6180.     ???
  6181. Return: ???
  6182. SeeAlso: AX=CC00h
  6183. ----------2FCD00-----------------------------
  6184. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  6185.     AX = CD00h
  6186. Return: AL = state
  6187.         00h not installed, OK to install
  6188.         01h not installed, not OK to install
  6189.         FFh installed
  6190. SeeAlso: AX=CD02h"Image"
  6191. --------P-2FCD00-----------------------------
  6192. INT 2F - LaserPort Interface - INSTALLATION CHECK
  6193.     AX = CD00h
  6194. Return: AL = status
  6195.         FFh installed
  6196. SeeAlso: AX=CD0Fh"LaserPort"
  6197. --------U-2FCD00-----------------------------
  6198. INT 2F - SWELL.EXE - INSTALLATION CHECK
  6199.     AX = CD00h
  6200. Return: AX = 00FFh installed
  6201.         BH = major version
  6202.         BL = minor version
  6203. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  6204.       process with INT 21/AH=4Bh
  6205. --------s-2FCD00BX464F-----------------------
  6206. INT 2F - Forte/Gravis - INSTALLATION CHECK
  6207.     AX = CD00h
  6208.     BX = 464Fh ('FO')
  6209.     CX = 5254h ('RT')
  6210.     DX = 4520h ('E ')
  6211. Return: AX = CDFFh if installed
  6212.         BX = 4155h ('AU')
  6213.         CX = 4449h ('DI')
  6214.         DX = 4F20h ('O ')
  6215.         ES:SI -> program ID string
  6216. SeeAlso: INT 21/AX=FD12h
  6217. ----------2FCD01-----------------------------
  6218. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  6219.     AX = CD01h
  6220.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  6221. Return: AL = status
  6222.         00h successful
  6223.         CX:BX -> internal character device name
  6224.         80h error
  6225. --------U-2FCD01-----------------------------
  6226. INT 2F - SWELL.EXE - SUSPEND ONCE
  6227.     AX = CD01h
  6228. Return: AX = 0000h
  6229. SeeAlso: AX=CD02h"SWELL"
  6230. ----------2FCD02-----------------------------
  6231. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  6232.     AX = CD02h
  6233. Return: AL = status
  6234.         00h/01h successful
  6235.         BH = major version number (BCD)
  6236.         BL = minor version number (BCD)
  6237.         80h error
  6238. Note:    if return AL = 01h, the IPI supports network redirection
  6239. SeeAlso: AX=CD00h"Image"
  6240. --------U-2FCD02-----------------------------
  6241. INT 2F - SWELL.EXE - SUSPEND
  6242.     AX = CD02h
  6243. Return: AX = 0000h
  6244. SeeAlso: AX=CD03h"SWELL"
  6245. ----------2FCD03-----------------------------
  6246. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  6247.     AX = CD03h
  6248.     BX = scan line
  6249.     CX = requested density in dots per inch (300, 600, or 1200)
  6250. Return: AL = status (see also AX=CD04h"Image")
  6251.         00h successful
  6252.         CX = density at which scan line was mapped
  6253.         ES:DI -> start of scan line
  6254.         80h unsuccessful
  6255.         81h scan line out of range
  6256.         82h unsupported scan line density
  6257.         83h out of memory
  6258. SeeAlso: AX=CD04h"Image"
  6259. --------U-2FCD03-----------------------------
  6260. INT 2F - SWELL.EXE - ACTIVATE
  6261.     AX = CD03h
  6262. Return: AX = 0000h
  6263. SeeAlso: AX=CD02h"SWELL"
  6264. ----------2FCD04-----------------------------
  6265. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  6266.     AX = CD04h
  6267.     CX:BX -> structure (see #1740)
  6268. Return: AL = status (see #1739)
  6269. SeeAlso: AX=CD03h"Image"
  6270.  
  6271. (Table 1739)
  6272. Values for IPI function status:
  6273.  00h    successful
  6274.  80h    unsuccessful
  6275.  81h    scan line out of range
  6276.  82h    unsupported scan line density
  6277.  83h    out of memory
  6278.  84h    unrecognized source
  6279.  85h    initialization error
  6280.  
  6281. Format of structure:
  6282. Offset    Size    Description    (Table 1740)
  6283.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  6284.  02h    DWORD    pointer to image data
  6285.  06h    WORD    scan line on which to place
  6286.  08h    WORD    bit offset from start of scan line at which to place
  6287.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  6288.  0Ch    WORD    width in bits of data
  6289.  0Eh    WORD    source logical page number
  6290.  10h    WORD    source handle (only if source in expanded memory)
  6291.  12h    WORD    source offset (only if source in expanded memory)
  6292. --------U-2FCD04-----------------------------
  6293. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  6294.     AX = CD04h
  6295. Return: AX = 0000h
  6296. SeeAlso: AX=CD05h"SWELL"
  6297. ----------2FCD05-----------------------------
  6298. INT 2F - Intel Image Processing Interface - PRINT PAGE
  6299.     AX = CD05h
  6300. Return: AL = status (00h,80h) (see #1739)
  6301. Note:    page image is retained, so multiple calls will print multiple copies of
  6302.       the page
  6303. SeeAlso: AX=CD06h"Image"
  6304. --------U-2FCD05-----------------------------
  6305. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  6306.     AX = CD05h
  6307. Return: AX = 0000h
  6308. SeeAlso: AX=CD04h"SWELL"
  6309. ----------2FCD06-----------------------------
  6310. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  6311.     AX = CD06h
  6312. Return: AL = status (00h,80h) (see #1739)
  6313. Note:    palette is reset to default
  6314. SeeAlso: AX=CD09h"Image"
  6315. --------U-2FCD06-----------------------------
  6316. INT 2F - SWELL.EXE - UNINSTALL
  6317.     AX = CD06h
  6318. Return: AX = status
  6319.         0000h uninstalled
  6320.         8002h programs still swapped, not uninstalled
  6321. ----------2FCD07-----------------------------
  6322. INT 2F - Intel Image Processing Interface - reserved
  6323.     AX = CD07h
  6324. SeeAlso: AX=CD00h"Image"
  6325. --------U-2FCD07-----------------------------
  6326. INT 2F - SWELL.EXE - GET INFO
  6327.     AX = CD07h
  6328.     ES:BX -> 32-byte buffer for info (see #1741)
  6329. Return: AX = status
  6330.         0000h successful
  6331.         ES:BX buffer filled
  6332.         8001h buffer wrong size
  6333.  
  6334. Format of SWELL.EXE info buffer:
  6335. Offset    Size    Description    (Table 1741)
  6336.  00h    WORD    20h  (total size of buffer)
  6337.  02h    BYTE    suspend-once mode active if nonzero
  6338.  03h    BYTE    00h active, 01h suspended
  6339.  04h    BYTE    00h quiet, 01h verbose
  6340.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  6341.  06h 26 BYTEs    unused???
  6342. ----------2FCD08-----------------------------
  6343. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  6344.     AX = CD08h
  6345.     CX:BX -> structure (see #1742)
  6346. Return: AL = status (00h,80h-85h) (see #1739)
  6347. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  6348.  
  6349. Format of IPI screen image structure:
  6350. Offset    Size    Description    (Table 1742)
  6351.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  6352.  02h    DWORD    pointer to image data
  6353.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  6354.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  6355.  0Ah    WORD    left cropping (currently must be zero)
  6356.  0Ch    WORD    top cropping (currently must be zero)
  6357.  0Eh    WORD    width (currently must be 8000h)
  6358.  10h    WORD    height (currently must be 8000h)
  6359.  12h    WORD    horizontal size of image in 1200 dpi units
  6360.  14h    WORD    vertical size of image in 1200 dpi units
  6361.  16h    WORD    aspect ratio (currently reserved)
  6362.  18h    WORD    initialization flag (if 01h, initialization is performed)
  6363.  1Ah    WORD    pixels per line of source data
  6364.  1Ch    WORD    number of scan lines in source data
  6365.  1Eh    WORD    number of scan lines in packet
  6366.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  6367.  22h    WORD    pixels per byte (1,2,4, or 8)
  6368.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  6369.  26h    WORD    source page number (if in expanded memory)
  6370.  28h    WORD    source handle (if in expanded memory)
  6371.  2Ah    WORD    source offset (if in expanded memory)
  6372. --------U-2FCD08-----------------------------
  6373. INT 2F - SWELL.EXE - UNUSED
  6374.     AX = CD08h
  6375. Return: AX = FFFFh (error)
  6376. ----------2FCD09-----------------------------
  6377. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  6378.     AX = CD09h
  6379.     CX:BX -> structure (see #1743)
  6380. Return: AL = status (00h,80h) (see #1739)
  6381. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  6382.  
  6383. Format of IPI load screen structure:
  6384. Offset    Size    Description    (Table 1743)
  6385.  00h    BYTE    style
  6386.         44h ('D') diamond style
  6387.         4Ch ('L') line style
  6388.  01h    BYTE    reserved (00h)
  6389.  02h    WORD    frequency in lines per inch [sic]
  6390.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  6391.  04h    WORD    screen angle in degrees (-360 to 360)
  6392.         currently coerced to nearest of -45, 0, 45, or 90
  6393. --------U-2FCD09-----------------------------
  6394. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  6395.     AX = CD09h
  6396. Return: AX = 0000h
  6397. SeeAlso: AX=CD0Ah"SWELL"
  6398. ----------2FCD0A-----------------------------
  6399. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  6400.     AX = CD0Ah
  6401.     CX:BX -> palette structure (see #1744)
  6402. Return: AL = status (00h,80h) (see #1739)
  6403. SeeAlso: AX=CD09h"Image Processing"
  6404.  
  6405. Format of IPI palette structure:
  6406. Offset    Size    Description    (Table 1744)
  6407.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  6408.  01h    2**N    palette translation values, one per possible pixel value
  6409. --------U-2FCD0A-----------------------------
  6410. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  6411.     AX = CD0Ah
  6412. Return: AX = 0000h
  6413. SeeAlso: AX=CD09h"SWELL"
  6414. --------P-2FCD0F-----------------------------
  6415. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  6416.     AX = CD0Fh
  6417.     BL = function
  6418.         01h enable
  6419.         02h disable
  6420.         03h ???
  6421. Return: AL = status
  6422.         00h success
  6423. SeeAlso: AX=CD00h"LaserPort"
  6424. --------K-2FCF00-----------------------------
  6425. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  6426.     AX = CF00h
  6427. Return: AL = FFh if installed
  6428. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  6429. Note:    values in AL other than 00h cause an immediate return without modifying
  6430.       any registers
  6431. --------G-2FD000-----------------------------
  6432. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  6433.     AX = D000h
  6434. Return: CF set on error
  6435.         all other registers must be unchanged)
  6436.     CF clear if successful
  6437.         AL = FFh
  6438.         AH = driver semaphor
  6439.         00h driver is not active
  6440.         01h driver is active
  6441.         BX = CS of the driver
  6442.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  6443.         DL = buffer semaphor
  6444.         00h driver is not pending
  6445.         01h driver is pending between functions 02h and 03h
  6446.         DH = show semaphor
  6447.         00h driver is not pending
  6448.         01h driver is pending between functions 04h and 05h
  6449. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  6450.       Schemmer, including a memory monitor, an interpreter and a
  6451.       disassembler
  6452. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  6453. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  6454.       FFh; the default is D0h for the display driver and D1h for the
  6455.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  6456.       numbers used)
  6457.     this function MUST be reentrant, as MDEBUG calls it after every popup
  6458.       before any other actions.  The handler should not change any
  6459.       registers if the display is in an unsupported mode or in a mode
  6460.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  6461.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  6462.       not call any of the other functions for this popup session.
  6463.     MDEBUG will not call the other functions if the returned version is
  6464.       less than the actual version of MDEBUG.
  6465.     if the driver is reentrant, DL and DH should be 00h
  6466. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  6467. --------M-2FD000-----------------------------
  6468. INT 2F - ZWmous - INSTALLATION CHECK
  6469.     AX = D000h
  6470. Return: AX = 5A57h ("ZW") if installed
  6471.         BX = segment of resident code
  6472. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  6473.       with many non-mouse applications by entering the letter under the
  6474.       mouse cursor on button presses
  6475. SeeAlso: INT 33/AX=0003h
  6476. --------N-2FD000-----------------------------
  6477. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  6478.     AX = D000h
  6479. Return: AL = FFh if CD/Networker TSR is loaded
  6480.     BX = 4D44h ("MD") signature
  6481.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  6482.     DX = bitmap identifying all loaded CD/Networker TSRs.
  6483. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  6484.       resident redirector TSR and a transient program that controls the
  6485.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  6486.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  6487. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  6488. --------G-2FD001-----------------------------
  6489. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  6490.     AX = D001h
  6491. Return: CF set on error
  6492.     AL = driver semaphor
  6493.     AH = buffer semaphor
  6494. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  6495. Notes:    MDEBUG calls this function after every successful call of the function
  6496.       00h. The function should reset all internal data and the status of
  6497.       the driver. If this function returns an error, MDEBUG will not call
  6498.       the other functions in this popup session.
  6499.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  6500.       FFh; the default is D0h for the display driver and D1h for the
  6501.       command driver
  6502. SeeAlso: AX=D000h
  6503. --------G-2FD002-----------------------------
  6504. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  6505.     AX = D002h
  6506. Return: CF set on error
  6507.     CF clear if successful
  6508.         display memory saved and display switched to one of the text modes
  6509.           02h, 03h or 07h.
  6510. Note:    MDEBUG calls this function only once every popup session before
  6511.       displaying its windows.
  6512. SeeAlso: AX=D000h,AX=D003h
  6513. --------N-2FD002BX4D44-----------------------
  6514. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  6515.     AX = D002h
  6516.     BX = 4D44h
  6517.     DX = bitmap identifying one loaded CD/Networker TSR
  6518. Return: ES:DI -> data area owned by TSR
  6519. Note:    the format of the data area changes with each minor revision, so it
  6520.       cannot be counted on
  6521. SeeAlso: AX=D000h"Lotus"
  6522. --------G-2FD003-----------------------------
  6523. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  6524.     AX = D003h
  6525. Return: CF set on error
  6526.     CF clear if successful
  6527.         display restored to the mode it was in before calling AX=D002h and
  6528.           the display memory is restored
  6529. Note:    MDEBUG calls this function only once every popup session just before
  6530.      it exits to normal DOS.
  6531. SeeAlso: AX=D000h,AX=D002h
  6532. --------G-2FD004-----------------------------
  6533. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  6534.     AX = D004h
  6535. Return: CF set on error
  6536.     CF clear if successful
  6537.         display switched to mode it was in before calling AX=D002h and the
  6538.           display memory is restored
  6539. Note:    This function needn't save the display memory before changing it.
  6540. SeeAlso: AX=D000h,AX=D005h
  6541. --------G-2FD005-----------------------------
  6542. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  6543.     AX = D005h
  6544. Return: CF set on error
  6545.     CF clear if successful
  6546.         display restored to mode it was in before calling AX=D004h
  6547. Note:    This function needn't save or change the display memory
  6548. SeeAlso: AX=D000h,AX=D004h
  6549. --------G-2FD0-------------------------------
  6550. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  6551.     AH = D0h
  6552.     AL = 06h-7Fh
  6553. Note:    these functions are reserved for future use
  6554. --------G-2FD0-------------------------------
  6555. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  6556.     AH = D0h
  6557.     AL = 80h-FFh
  6558. Note:    these functions numbers are reserved for user defined features (e.g.
  6559.       communication between the transient und resident parts of the driver)
  6560. --------G-2FD100-----------------------------
  6561. INT 2F C - MDEBUG command driver - GET STATUS
  6562.     AX = D100h
  6563.     BX = version of MDEBUG (BH = major, BL = minor)
  6564.     CX = command driver counter
  6565. ---v1.60+---
  6566.     DS:SI -> MDEBUG identification table (see #1745)
  6567.     ES = segment of display memory used by MDEBUG
  6568.     DI = size of video mode used by MDEBUG
  6569.         (high byte = lines, low byte = columns)
  6570. Return: DL = FFh
  6571.     BX = version number of the driver if it is less than the version in BX,
  6572.           else unchanged
  6573.     CX incremented
  6574. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  6575.       Schemmer, including a memory monitor, an interpreter, and a
  6576.       disassembler
  6577. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  6578. Notes:    called by MDEBUG at start of popup session; if the version number
  6579.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  6580.       not call any of the other functions during this popup session
  6581.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  6582.       FFh; the default is D0h for the display driver and D1h for the
  6583.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  6584.       actually used)
  6585.     this function must end with a far call to the old INT 2F handler after
  6586.       changing the registers
  6587.     this function MUST be reentrant
  6588.     command drivers must also declare the following data at the given
  6589.       offsets in the code segment
  6590.         100h  3 BYTEs    JMP-command in .COM-files
  6591.         103h    BYTE    NOP-command (90h)
  6592.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  6593.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  6594.                 each driver must have a unique name
  6595.     MDEBUG will pass every key and command to the command driver(s) before
  6596.       checking for a valid internal command
  6597. SeeAlso: AX=D000h,AX=D101h
  6598.  
  6599. Format of MDEBUG identification table:
  6600. Offset    Size    Description    (Table 1745)
  6601.  -2    WORD    entry offset
  6602.  00h    WORD    CS of MDEBUG
  6603.  02h    DWORD    old INT 08h vector
  6604.  06h    DWORD    old INT 09h vector
  6605.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  6606.  0Eh    BYTE    length of version string
  6607.  0Fh  N BYTEs    version string
  6608. --------G-2FD101-----------------------------
  6609. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  6610.     AX = D101h
  6611.     CX = command driver counter
  6612. Return: DL = status
  6613.         FFh if successful
  6614.         CX incremented
  6615.         else error: all registers unchanged
  6616. Note:    this function must end with a  far call to the old INT 2F handler after
  6617.       changing the registers
  6618.     this function must be reentrant
  6619. --------G-2FD102-----------------------------
  6620. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  6621.     AX = D102h
  6622.     BL = first character of the interpreter command
  6623.     BH = last character of the interpreter command (or blank)
  6624.     DS:SI -> parameter for the interpreter command as ASCIZ string
  6625.     DS:DI -> MDEBUG data structure (see #1747)
  6626. Return: AL = FFh
  6627.     CF set on error
  6628.         AH = error number (see #1746)
  6629.         DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
  6630.     CF clear if successful
  6631.         AH = return code
  6632.         00h continue processing the command line
  6633.         01h leave MDEBUG popup session
  6634.         02h leave MDEBUG popup session and automatically popup again
  6635.               if the InDOS flag is zero
  6636.         03h not used (same as 00h)
  6637.         04h not used (same as 00h)
  6638.         05h put new command line into the input buffer,
  6639.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  6640.         06h process new command line
  6641.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  6642.            else unknown status, but continue processing commmand line
  6643. Note:    this function must end with a far call to the old INT 2F handler (with
  6644.       registers unchanged) if the driver does not support the interpreter
  6645.       command in BX.  Otherwise, the driver must not chain to the old
  6646.       INT 2F.
  6647.  
  6648. (Table 1746)
  6649. Values for MDEBUG error number:
  6650.  01h    syntax error
  6651.  02h    first shell of the command.com is activ
  6652.  03h    Esc pressed
  6653.  04h    break pressed
  6654.  05h    DOS is busy
  6655.  06h    command ended
  6656.  07h    division by zero
  6657.  08h    invalid display driver
  6658.  09h    invalid command driver
  6659.  0Ah    error 8 and 9
  6660.  0Bh    unknown error
  6661.  0Ch    new error
  6662.  else    unknown error
  6663.  
  6664. Format of MDEBUG data structure:
  6665. Offset    Size    Description    (Table 1747)
  6666.  00h    WORD    register SE
  6667.  02h    WORD    register OF
  6668.  04h    WORD    register FS
  6669.  06h    WORD    register FO
  6670.  08h    WORD    register AX
  6671.  0Ah    WORD    register BX
  6672.  0Ch    WORD    register CX
  6673.  0Eh    WORD    register DX
  6674.  10h    WORD    register SI
  6675.  12h    WORD    register DI
  6676.  14h    WORD    register DS
  6677.  16h    WORD    register ES
  6678.  18h    WORD    register BP
  6679.  1Ah    WORD    register SS
  6680.  1Ch    WORD    register SP
  6681.  1Eh    WORD    register FL (flags)
  6682.  20h    WORD    register R0
  6683.  22h    WORD    register R1
  6684.  24h    WORD    register R2
  6685.  26h    WORD    register R3
  6686.  28h    WORD    register R4
  6687.  2Ah    WORD    register R5
  6688.  2Ch    WORD    register R6
  6689.  2Eh    WORD    register R7
  6690.  30h    WORD    register R8
  6691.  32h    WORD    register CS, return-address
  6692.  34h    WORD    register IP, return-address
  6693.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  6694.         saved monitor address (v1.70)
  6695.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  6696.         (original register values at popup entry of MDEBUG)
  6697.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  6698.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  6699.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  6700.  6Ah    DWORD    address of the DOS-invars-table
  6701.  6Eh    DWORD    address of the InDOS flag
  6702.  72h    WORD    offset of the register which is used for the segment of the
  6703.           first monitor window
  6704.  74h    WORD    offset of the register which is used for the offset of the
  6705.           first monitor window
  6706.  76h    WORD    name of the register which is used for the segment of the
  6707.           first monitor segment
  6708.  78h    WORD    name of the register which is used for the offset of the first
  6709.           monitor window
  6710.  7Ah    WORD    pseudo register 1
  6711.  7Ch    WORD    pseudo register 2
  6712. --------G-2FD103-----------------------------
  6713. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  6714.     AX = D103h
  6715.     BX = key code (like result of an interrupt 16h call)
  6716.     CX = cursor position
  6717.         0000h in the ASCII column of the monitor
  6718.         0001h in one of the hex fields of the monitor
  6719.     DS:SI -> MDEBUG data structure (see #1747)
  6720.     ES:DI -> actual byte in the monitor
  6721. Return: AL = FFh
  6722.     AH = return code
  6723.         00h key processed, read next key
  6724.         01h leave MDEBUG popup session
  6725.         02h leave MDEBUG popup session and automatically popup again if DOS
  6726.           is not busy
  6727.         03h signal an error (beep)
  6728.         04h driver has redefined the key, proceed with the new key
  6729.         BX = new key code
  6730.         MDEBUG will not pass the new key to the command driver(s)
  6731.        else treat like code 00h
  6732. Note:    this function must end with a far call to the old INT 2F handler (with
  6733.       registers unchanged) if the driver does not support the key in BX.
  6734.       Otherwise, the driver must not chain to the old INT 2F.
  6735. SeeAlso: AX=D104h
  6736. --------G-2FD104-----------------------------
  6737. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  6738.     AX = D104h
  6739.     DS:SI -> MDEBUG data structure (see #1747)
  6740. Return: AL = FFh
  6741.     AH = return code
  6742.         00h key processed, read next key
  6743.         01h leave MDEBUG popup session
  6744.         02h leave MDEBUG popup session and automactically popup again if
  6745.           DOS is not busy
  6746.         03h signal an error (beep)
  6747.         04h driver has redefined the key, proceed with the new key
  6748.         BX = new key code
  6749.         MDEBUG won't pass the new key to the command driver(s)
  6750.         05h put new command line into the input buffer
  6751.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  6752.         06h process new command line
  6753.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  6754.        else treat like code 00h
  6755. Note:    this function must end with a far call to the old INT 2F handler if the
  6756.       driver does not support the key in BX.  Otherwise, the driver must
  6757.       not chain to the old INT 2F.
  6758. SeeAlso: AX=D103h
  6759. --------G-2FD1-------------------------------
  6760. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  6761.     AH = D1h
  6762.     AL = 05h-0Ah
  6763. Note:    these functions are reserved for future use
  6764. --------G-2FD110-----------------------------
  6765. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  6766.     AX = D110h
  6767. Return: DL = FFh
  6768.     ES:BX -> next program in the chain for INT 2F
  6769.     CX = code segment of this driver
  6770.     DI = offset of driver identification table (see #1748) (v1.60+)
  6771. Notes:    only called by the transient part of the driver
  6772.     must be reentrant and the driver must not chain this function to the
  6773.       old INT 2F
  6774.  
  6775. Format of the MDEBUG driver identification table:
  6776. Offset    Size    Description    (Table 1748)
  6777.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  6778.                          ^- Note: ASCII 129,German U-umlaut
  6779.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  6780.          each driver must have a unique name
  6781. --------G-2FD111-----------------------------
  6782. INT 2F - MDEBUG command driver - START DRIVER
  6783.     AX = D111h
  6784. Return: DL = FFh
  6785. Notes:    only called by the transient part of the driver to inform the resident
  6786.       part that it is installed
  6787.     the function must be reentrant and the driver mustn't chain this
  6788.       function to the old INT 2F
  6789. SeeAlso: AX=D101h,AX=D112h
  6790. --------G-2FD112-----------------------------
  6791. INT 2F - MDEBUG command driver - END DRIVER
  6792.     AX = D112h
  6793. Return: DL = FFh
  6794. Notes:    only called by the transient part of the driver to inform the resident
  6795.       part that it will be released after this function
  6796.     the function must be reentrant and the driver mustn't chain this
  6797.       function to the old INT 2F
  6798. SeeAlso: AX=D101h,AX=D111h
  6799. --------G-2FD1-------------------------------
  6800. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  6801.     AH = D1h
  6802.     AL = 13h-7Fh
  6803. Note:    these functions are reserved for future use
  6804. --------G-2FD1-------------------------------
  6805. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  6806.     AH = D1h
  6807.     AL = 80h-FFh
  6808. Note:    these functions are reserved for user defined features (e.g.
  6809.       communication between the transient und resident parts of the driver)
  6810. --------U-2FD200-----------------------------
  6811. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  6812.     AX = D200h
  6813. Return: AL = FFh if installed??? (documented as AX = return value)
  6814. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  6815.       board by Advantec
  6816. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  6817. --------Q-2FD200BX5144-----------------------
  6818. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  6819.     AX = D200h
  6820.     BX = 5144h ("QD")
  6821.     CX = 4D45h ("ME")
  6822.     DX = 4D30h ("M0")
  6823. Return: AL = FFh installed
  6824.     if BX,CX,DX registers were as specified on entry:
  6825.         BX = 4D45h ("ME")
  6826.         CX = 4D44h ("MD")
  6827.         DX = 5652h ("VR")
  6828. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  6829. Notes:    the Quarterdeck RPCI (Resident Program Communication Interface) is
  6830.       supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  6831.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  6832.       Quarterdeck product, it just chains to the previous INT 2F handler
  6833. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  6834. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  6835. --------U-2FD201-----------------------------
  6836. INT 2F - PCL-838.EXE - UNINSTALL
  6837.     AX = D201h
  6838. Return: AX = return value
  6839. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  6840. --------m-2FD201BX4849-----------------------
  6841. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  6842.     AX = D201h
  6843.     BX = 4849h ("HI")
  6844.     CX = 4D45h ("ME")
  6845.     DX = 4D51h ("MQ")
  6846. Return: BX = 4F4Bh ("OK")
  6847.     ES:DI -> HIMEM entry point
  6848. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  6849. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  6850. --------m-2FD201BX4849-----------------------
  6851. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  6852.     AX = D201h
  6853.     BX = 4849h ("HI")
  6854.     CX = 5241h ("RA")
  6855.     DX = 4D30h ("M0")
  6856. Return: BX = 4F4Bh ("OK")
  6857.     CX = segment of start of HIRAM chain
  6858.     DX = reserved block owner (QEMM/QRAM code segment)
  6859. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  6860. Note:    the HIRAM memory chain has the same format as the regular DOS 4.0
  6861.       memory chain (see #0841 at INT 21/AH=52h), except that XMS Upper
  6862.       Memory Blocks have the block header program name field set to
  6863.       "UMB"; blocks whose "owner" field is set to the reserved segment
  6864.       returned in DX are locked-out regions such as video memory and ROMs.
  6865. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  6866. --------G-2FD201BX4D41-----------------------
  6867. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  6868.     AX = D201h
  6869.     BX = 4D41h ("MA")
  6870.     CX = 4E49h ("NI")
  6871.     DX = 4645h ("FE")
  6872. Return: BX = 5354h ("ST") if installed
  6873. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  6874. SeeAlso: AX=D200h
  6875. --------E-2FD201BX4D45-----------------------
  6876. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  6877.     AX = D201h
  6878.     BX = 4D45h ("ME")
  6879.     CX = 5155h ("QU")
  6880.     DX = 5044h ("PD")
  6881. Return: AL = FFh
  6882.     BX = 4F4Bh ("OK")
  6883. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  6884. Note:    this function is called by QEMM 6.03
  6885.     performs a variety of actions before setting return registers
  6886. SeeAlso: AX=D200h
  6887. --------m-2FD201BX5145-----------------------
  6888. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  6889.     AX = D201h
  6890.     BX = 5145h ("QE")
  6891.     CX = 4D4Dh ("MM")
  6892.     DX = 3432h ("42")
  6893. Return: BX = 4F4Bh ("OK")
  6894.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  6895. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  6896. Note:    this call is not available under QEMM v6.00 unless Windows3 support
  6897.       has been disabled with the NW3 switch to QEMM386.SYS
  6898. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  6899. --------V-2FD201BX5649-----------------------
  6900. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  6901.     AX = D201h
  6902.     BX = 5649h ("VI")
  6903.     CX = 4452h ("DR")
  6904.     DX = 414Dh ("AM")
  6905. Return: BX = 4F4Bh ("OK")
  6906.     ES:DI -> VIDRAM entry point (see #1749)
  6907. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  6908. SeeAlso: AX=D200h
  6909.  
  6910. (Table 1749)
  6911. Call VIDRAM entry point with:
  6912.     AH = 00h get status
  6913.         Return: AL = VIDRAM state (see #1750)
  6914.             BL = extra RAM status (see #1751)
  6915.             BH = feature flags (see #1752)
  6916.             CL = current monitor (01h = mono, 80h = color)
  6917.             SI = current top of memory (paragraph)
  6918.             DI = segment of start of HiRAM chain
  6919.     AH = 01h setup
  6920.         AL = VIDRAM state (see #1750)
  6921.         BL = extra RAM status (see #1751)
  6922.         BH = feature flags (see #1752)
  6923.         CL = monitor (01h = monochrome, 80h = color)
  6924.         SI = new top of memory (paragraph)
  6925.         DI = segment of start of HiRAM chain
  6926.     AH = 02h get end address of VIDRAM code
  6927.         Return: ES:DI -> VIDRAM partial map context (see #1753,#1754)
  6928. Return: CF set on error
  6929.     CF clear if successful
  6930.  
  6931. (Table 1750)
  6932. Values for VIDRAM state:
  6933.  00h    off
  6934.  01h    no EGA graphics
  6935.  02h    no graphics at all
  6936.  
  6937. (Table 1751)
  6938. Values for VIDRAM extra RAM status:
  6939.  00h    VIDRAM does not use extra RAM
  6940.  01h    VIDRAM uses EMS as extra RAM
  6941.  02h    VIDRAM uses EGA as extra RAM
  6942.  
  6943. Bitfields for VIDRAM feature flags:
  6944. Bit(s)    Description    (Table 1752)
  6945.  0    override enabled
  6946.  1    mapped memory detected in A000h-B000h range
  6947.  2    top of memory not at 640K
  6948.  3    MDA detected
  6949.  4    high RAM exists in video area
  6950.  5    mapped memory detected in video area
  6951.  6-7    reserved???
  6952.  
  6953. Format of VIDRAM partial map context (EMS 3.2):
  6954. Offset    Size    Description    (Table 1753)
  6955.  00h    BYTE    EMS version ID (32h)
  6956.  01h    WORD    EMM handle for this entry
  6957.  03h    BYTE    number of frames
  6958.  04h    BYTE    first page frame
  6959.  05h    WORD    offset from ES to previously saved map
  6960.  
  6961. Format of VIDRAM partial map context (EMS 4.0):
  6962. Offset    Size    Description    (Table 1754)
  6963.  00h    BYTE    EMS version ID (40h)
  6964.  01h    WORD    mappable segment count
  6965.  03h  N WORD    mappable segments
  6966.     WORD    offset to previously saved map???
  6967. --------U-2FD202-----------------------------
  6968. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  6969.     AX = D202h
  6970.     CX:BX -> parameter table
  6971. Return: AX = return value
  6972. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  6973. --------R-2FD300BX4562-----------------------
  6974. INT 2F U - TeleReplica - INSTALLATION CHECK
  6975.     AX = D300h
  6976.     BX = 4562h
  6977.     CX = 2745h
  6978.     DX = serial port I/O base address??? (03F8h for v3.9)
  6979. Return: SI = segment of resident code
  6980.     AX = 251Dh
  6981.     BX = DF21h
  6982.     CX = F321h
  6983.     DX = ???
  6984. --------R-2FD3CB-----------------------------
  6985. INT 2F U - LapLink Quick Connect v6 - API
  6986.     AX = D3CBh
  6987.     CX = function
  6988.         0002h get ???
  6989.         Return: BX:AX -> ???
  6990.             CL = ???
  6991.             CH = ???
  6992.             DX = ???
  6993.             DI = COM1 I/O port???
  6994.             SI = COM2 I/O port???
  6995.         0003h initialization???
  6996.         0004h ???
  6997.         0005h initialization???
  6998.         0006h reset/clear ???
  6999.         Return: AX = 0000h
  7000.             ES:DI -> next byte after ??? cleared by this call
  7001.         0007h initialization???
  7002.         0008h uninstall
  7003.         Return: BX = status
  7004.                 0000h successful
  7005.                 FFFFh incomplete, stub remains in memory
  7006. Return: CX = 534Bh (except function 0002h)
  7007. Index:    uninstall;LapLink Quick Connect
  7008. --------l-2FD44D-----------------------------
  7009. INT 2F - 4DOS.COM v2.1+ - API
  7010.     AX = D44Dh
  7011.     BH = function
  7012.         00h installation check
  7013.         Return: AX = 44DDh
  7014.             BL = major version number
  7015.             BH = minor version number
  7016.             CX = PSP segment address for current invocation
  7017.             DL = 4DOS shell number (0 for the first (root) shell,
  7018.                   updated each time a new copy is loaded)
  7019.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  7020.         Return: nothing
  7021.         (internal, v4.0) ???
  7022.         Return: AX = 44DDh
  7023.             ES:BX -> data area (see #1755)
  7024.         02h ???
  7025.         DX = ???
  7026.     ---v2.1-3.03 only---
  7027.         03h EXEC program
  7028.         CX:DX -> EXEC record (see #1756)
  7029.         FEh deallocate shell number (passed through to root shell)
  7030.         ???
  7031.         FFh allocate shell number (passed through to root shell)
  7032. Note:    bug in v3.00 will crash system if unrecognized value in BH
  7033. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  7034. Index:    installation check;4DOS|installation check;NDOS
  7035.  
  7036. Format of 4DOS v4.0 data area:
  7037. Offset    Size    Description    (Table 1755)
  7038.  00h  2 BYTEs    ???
  7039.  06h    WORD    XMS handle for swapping
  7040.     ???
  7041.  
  7042. Format of 4DOS EXEC record:
  7043. Offset    Size    Description    (Table 1756)
  7044.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  7045.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  7046.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  7047. --------l-2FD44E-----------------------------
  7048. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  7049.     AX = D44Eh
  7050. ---4DOS v3.01+---
  7051.     BX = condition
  7052.         0000h 4DOS is ready to display prompt
  7053.         0001h 4DOS has displayed the prompt, about to accept user input
  7054. Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
  7055. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  7056. SeeAlso: AX=D44Dh
  7057. --------K-2FD44FBX0000-----------------------
  7058. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  7059.     AX = D44Fh
  7060.     BX = 0000h
  7061. Return: AX = 44DDh if installed
  7062. Note:    this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  7063.       which emulate the 4DOS and NDOS keystack
  7064. SeeAlso: AX=D44Fh/BX=0001h,AX=E44Fh/BX=0000h
  7065. --------K-2FD44FBX0001-----------------------
  7066. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  7067.     AX = D44Fh
  7068.     BX = 0001h
  7069.     CX = number of keystrokes (01h-FFh)
  7070.     DS:DX -> keystroke list (one word per keystroke)
  7071. Return: AX = status
  7072.         0000h successful
  7073.         nonzero failed
  7074.     BX,CX,DX destroyed
  7075. Notes:    the keystrokes are the exact values to return from subsequent calls to
  7076.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  7077.         0000h causes subfunctions 01h and 11h to indicate an empty
  7078.               keyboard buffer
  7079.         FFFFh is followed by a word indicating the number of clock
  7080.               ticks to delay before the next faked keystroke
  7081.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  7082.       invocation, and does not range-check CX; it will overwrite memory
  7083.       following the resident portion if CX is greater than 100h.
  7084.     this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  7085.       which emulate the 4DOS and NDOS keystack
  7086. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  7087. --------G-2FD600-----------------------------
  7088. INT 2F - HEART.COM - INSTALLATION CHECK
  7089.     AX = D600h
  7090. Return: AX = 0303h (two hearts) if installed
  7091.         ES:DI -> buffer (see #1757)
  7092. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  7093. Notes:    Once the host program has identified the address of the data area, it
  7094.       can change this to indicate safe/critical, alternate colours, etc.
  7095.     The entries for the color table are in char/attrib form.  Every two
  7096.       entries form a pair which is alternated between 68 times a minute.
  7097.       The first half of the table is for color videos, the second mono.
  7098.       Within each half, the first half is for the safe chars, and the
  7099.       second for the critical chars.
  7100.  
  7101. Format of HEART.COM buffer:
  7102. Offset    Size    Description    (Table 1757)
  7103.  00h  8 WORDs    table of colors/attributes (see notes above)
  7104.  10h    BYTE    flags
  7105.         bit 0: program is in critical section, so flash double
  7106.               exclamation mark
  7107.         bit 1: program is in safe code, so flash the heart character
  7108.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  7109.         of second line)
  7110. --------T-2FD600-----------------------------
  7111. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  7112.     AX = D600h
  7113. Return: AL = D6h if installed
  7114. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  7115.       is a programmer's text editor by Greenview Data.
  7116. SeeAlso: AX=D601h,AX=D602h
  7117. --------T-2FD601-----------------------------
  7118. INT 2F U - VEDIT VSWAP - ???
  7119.     AX = D601h
  7120.     BL = subfunction number???
  7121. Return: BL = return code ???
  7122.     ES = resident portion's data??? segment
  7123.     DX = resident portion's code segment
  7124. SeeAlso: AX=D600h"VSWAP"
  7125. --------T-2FD602-----------------------------
  7126. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  7127.     AX = D602h
  7128.     other registers set as for INT 21/AX=4B00h
  7129. Return: CF set on error
  7130.         AL = error code
  7131.         82h = failure due to ???
  7132.     CF clear on success
  7133. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  7134. --------N-2FD701BX0000-----------------------
  7135. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  7136.     AX = D701h
  7137.     BX = 0000h
  7138. Return: AX = 0000h if installed
  7139.         BX = interrupt number (60h to 66h)
  7140.        nonzero not present
  7141. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  7142.       necessary to examine the four bytes preceding the handlers for
  7143.       INT 60 through INT 66 for the string "BANV"
  7144. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  7145. --------N-2FD702-----------------------------
  7146. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  7147.     AX = D702h
  7148.     BX = function
  7149.     ???
  7150. Return: ???
  7151. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  7152. --------N-2FD703-----------------------------
  7153. INT 2F U - Banyan VINES v4+ - MAIL interface
  7154.     AX = D703h
  7155.     BX = function
  7156.     ???
  7157. Return: ???
  7158. SeeAlso: AX=D702h,AX=D704h
  7159. --------N-2FD704-----------------------------
  7160. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  7161.     AX = D704h
  7162.     BX = function
  7163.     ???
  7164. Return: ???
  7165. SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
  7166. --------N-2FD800-----------------------------
  7167. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  7168.     AX = D800h
  7169. Return: AL = FFh if installed
  7170.         DX = version number (0100h for v1.0, 0101h for v1.1)
  7171.         BX = data segment of resident copy
  7172.         ES:DI -> private API entry point (see #1758)
  7173.         SI = segment of resident code
  7174. SeeAlso: AX=7A00h,AX=D880h
  7175.  
  7176. (Table 1758)
  7177. Call CLIENT API entry point with:
  7178.     BX = function
  7179.         0000h get ???
  7180.         Return: DX = CLIENT version??? (0101h for v1.1)
  7181.             ES:BX -> ??? data
  7182.         0001h ???
  7183.         0002h ???
  7184.         0003h ???
  7185.         0004h ???
  7186.         0005h ???
  7187.         DL = ???
  7188.         ???
  7189.         Return: ???
  7190.         0006h get module name???
  7191.         ES:DI -> 16-byte buffer
  7192.         Return: CX = ???
  7193.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  7194.         0007h ???
  7195.         DX:CX = ???
  7196.         ???
  7197.         Return: ???
  7198.         0008h ???
  7199.         0009h ???
  7200.         DL = ???
  7201.         ES:DI -> 16-byte buffer for ???
  7202.         Return: CF clear if successful
  7203.                 AX = 0000h
  7204.                 CX = 0000h
  7205.                 SI,DI destroyed
  7206.             CF set on error
  7207.                 AX = error code 4903h
  7208.         000Ah ???
  7209.         AH = subfunction
  7210.             00h get ???
  7211.             01h clear/set ??? flag
  7212.             AL = new state (00h cleared, 01h set)
  7213.             02h set ???
  7214.             DX = new value of ???
  7215.         Return: DX = old value of ???
  7216.         000Bh ???
  7217.         AX = ???
  7218.         ???
  7219.         Return: ???
  7220.         000Ch ???
  7221.         AX = ???
  7222.         ???
  7223.         Return: ???
  7224.         000Dh ???
  7225.         AX = ???
  7226.         ???
  7227.         Return: ???
  7228.         000Eh get original INT 17
  7229.         Return: CF clear
  7230.             ES:BX -> original INT 17
  7231.         000Fh ???
  7232.         0010h ???
  7233.         AX = ???
  7234.         ???
  7235.         Return: ???
  7236.         0011h get ???
  7237.         Return: CF clear
  7238.             DL = ???
  7239.         0012h get ???
  7240.         AL = index of ???
  7241.         ES:DI -> 10-byte buffer for ???
  7242.         Return: CF clear if successful
  7243.                 ES:DI buffer filled
  7244.                 AX,CX destroyed
  7245.             CF set on error
  7246.                 AX = error code (4907h if AL out of range)
  7247.         0013h get ???
  7248.         Return: CF clear
  7249.             DH = ???
  7250.             DL = ???
  7251.         0014h ???
  7252.         DL = ???
  7253.         ???
  7254.         Return: CF clear if successful
  7255.                 ???
  7256.             CF set on error
  7257.                 AX = error code 8056h
  7258.         0015h ???
  7259.         DX = ???
  7260.         Return: ES:DI -> ???
  7261.         other
  7262.         Return: CF set
  7263.             AX = 0001h (invalid function)
  7264. --------N-2FD856-----------------------------
  7265. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  7266.     AX = D856h
  7267. Return: AX = 0001h if supported???
  7268.     BX = ??? (0004h for v1.1)
  7269.     CX = ??? (0F20h for v1.1)
  7270.     DS = segment of resident code
  7271.     ES = data segment of resident copy
  7272. Note:    this function is also supported by Personal NetWare SERVER, bundled
  7273.       with Novell DOS 7
  7274. --------N-2FD880-----------------------------
  7275. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  7276.     AX = D880h
  7277. Return: AL = FFh if installed
  7278.         DX = version number (0100h for v1.0, 0101h for v1.1)
  7279.         BX = data segment of resident copy
  7280.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  7281.         ES:DI -> private API entry point (see #1759)
  7282.         SI = ??? (offset of configuration info?)
  7283. Note:    this function is also supported by Personal NetWare SERVER, but DI is
  7284.       not set; instead, ES:SI points at the API entry point
  7285. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  7286.  
  7287. (Table 1759)
  7288. Call SERVER API entry point with:
  7289.     BX = function
  7290.         0000h ???
  7291.         ???
  7292.         Return: ???
  7293.         Note: closes open files by calling INT 21/AH=3Eh
  7294.         0001h get connection information
  7295.         DX = connection number (0001h-max connections)
  7296.         ES:DI -> 28-byte buffer for connection information
  7297.         Return: CF clear if successful
  7298.                 ES:DI buffer filled
  7299.             CF set on error
  7300.                 AX = FFFFh
  7301.     ---Personal NetWare only---
  7302.         0002h ???
  7303.         0003h ???
  7304.         0004h ???
  7305.         0005h ???
  7306.         0006h ???
  7307.         0007h ???
  7308.         other
  7309.         Return: CF set
  7310.             AX = 0001h (invalid function)
  7311. --------d-2FD8C0-----------------------------
  7312. INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
  7313.     AX = D8C0h
  7314. Return: AL = FFh if installed
  7315.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  7316.         DH = major version??? (01h for v1.1)
  7317.         DL = minor version??? (01h for v1.1)
  7318.         ES:DI -> private API entry point (see #1760)
  7319. Program: NLCACHE is a disk cache included with NetWare Lite
  7320. SeeAlso: AX=D800h,AX=D880h
  7321.  
  7322. (Table 1760)
  7323. Call NLCACHE/NWCACHE API entry point with:
  7324.     BX = function
  7325.         0000h ???
  7326.         ???
  7327.         Return: CF clear if successful
  7328.                 AX = 0000h
  7329.                 ???
  7330.             CF set on error
  7331.                 AX = error code
  7332.         0001h (NWCACHE only) ???
  7333.         ES:DI -> buffer for ???
  7334.         Return: ???
  7335.         other
  7336.         Return: CF set
  7337.             AX = 0001h (invalid function)
  7338. --------F-2FDA00-----------------------------
  7339. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  7340.     AX = DA00h
  7341. Return: AH = enabled state (00h = enabled, 01h = disabled)
  7342.     AL = 5Ah installed
  7343. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  7344.       fax modems.
  7345. Note:    This function, and the other DAxxh functions, may apply only to version
  7346.       1 of the software; see AX=DB00h for the version 2 installation check
  7347. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  7348. --------F-2FDA01-----------------------------
  7349. INT 2F - ZyXEL ZFAX - UNINSTALL
  7350.     AX = DA01h
  7351. Return: AL = 00h Success
  7352.          01h Failure
  7353. SeeAlso: AX=DA00h,AX=DB01h
  7354. --------F-2FDA02-----------------------------
  7355. INT 2F - ZyXEL ZFAX - DISABLE
  7356.     AX = DA02h
  7357. Return: AL = 00h
  7358. SeeAlso: AX=DA03h,AX=DB02h
  7359. --------F-2FDA03-----------------------------
  7360. INT 2F - ZyXEL ZFAX - ENABLE
  7361.     AX = DA03h
  7362. Return: AL = 00h
  7363. SeeAlso: AX=DA02h,AX=DB03h
  7364. --------G-2FDA55-----------------------------
  7365. INT 2F U - TRAP.COM - INSTALLATION CHECK
  7366.     AX = DA55h
  7367.     DL = interrupt number
  7368.     DH = ???
  7369. Return: if installed
  7370.         AH = interrupt number
  7371.         AL = ???
  7372.         ES:BX -> ???
  7373. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  7374. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  7375.       the interrupt number is part of the installation check
  7376. --------N-2FDAB2-----------------------------
  7377. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  7378.     AX = DAB2h
  7379. Return: AX = 00FFh if installed
  7380.         BX:CX -> MIB table
  7381. Program: BWSNMP is part of the BW-NFS package
  7382. SeeAlso: INT 62/AH=00h"ETHDEV"
  7383. --------F-2FDB00-----------------------------
  7384. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  7385.     AX = DB00h
  7386. Return:    AL = 5Bh if installed (v2.x)
  7387.         ES:BX -> ???
  7388.     AX = 00DBh if installed (v3)
  7389.         ES:BX -> ZFAX configuration table (see #1761)
  7390. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  7391.       fax modems.
  7392. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  7393.  
  7394. Format of ZFAX Configuration Table:
  7395. Offset    Size    Description    (Table 1761)
  7396.  00h    WORD    version number (0300h for v3.0)
  7397.  02h    BYTE    reserved
  7398.  03h 70 BYTEs    ZFAX working path
  7399.  49h 128 BYTEs    path to external editor
  7400.  C9h 128 BYTEs    path to external terminal emulator
  7401. 149h 128 BYTEs    path to Ring Shell
  7402. 1C9h 128 BYTEs    path to DOS Shell
  7403. 249h 128 BYTEs    path to Data Shell
  7404. 2C9h 70 BYTEs    path to Chinese font
  7405. 30Fh    BYTE    printer type (see #1762)
  7406. 310h    BYTE    printer port (00h = LPT1, etc.)
  7407. 311h    BYTE    type of graphics adapter
  7408.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  7409. 312h    BYTE    display type
  7410.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  7411. 313h    BYTE    scan code for ZFAX hotkey
  7412. 314h    BYTE    shift mask for ZFAX hotkey
  7413. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  7414. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  7415. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  7416. 318h    BYTE    normal ring answer type (see #1763)
  7417. 319h    BYTE    Ring 1 answer type (see #1763)
  7418. 31Ah    BYTE    Ring 2 answer type (see #1763)
  7419. 31Bh    BYTE    Ring 3 answer type (see #1763)
  7420. 31Ch    BYTE    COM port for modem
  7421. 31Dh    BYTE    speaker volume (00h-07h)
  7422. 31Eh    BYTE    modem dial timer, seconds
  7423. 31Fh    WORD    user-defined COM port I/O address
  7424. 321h    BYTE    user-defined COM port IRQ number
  7425. 322h 81 BYTEs    dial prefix string
  7426. 373h 79 BYTEs    dial postfix string
  7427. 3C2h    BYTE    ring count until automatic answer
  7428. 3C3h    BYTE    retry count on busy signal
  7429. 3C4h    BYTE    redial delay in seconds
  7430. 3C5h    WORD    system password
  7431. 3C7h    BYTE    reserved
  7432. 3C8h    BYTE    voice file compression format
  7433.         00h CELP at 9600bps
  7434.         01h two-bit ADPCM at 19200bps
  7435.         03h three-bit ADPCM at 28800bps
  7436. 3C9h    BYTE    voice system: DTMF 0 action (see #1764)
  7437. 3CAh    BYTE    voice system: DTMF 1 action
  7438. 3CBh    BYTE    voice system: DTMF 2 action
  7439. 3CCh    BYTE    voice system: DTMF 3 action
  7440. 3CDh    BYTE    voice system: DTMF 4 action
  7441. 3CEh    BYTE    voice system: DTMF 5 action
  7442. 3CFh    BYTE    voice system: DTMF 6 action
  7443. 3D0h    BYTE    voice system: DTMF 7 action
  7444. 3D1h    BYTE    voice system: DTMF 8 action
  7445. 3D2h    BYTE    voice system: DTMF 9 action (see #1764)
  7446. 3D3h    WORD    reserved
  7447. 3D5h 25 BYTEs    local FAX ID to display on page header
  7448. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  7449. 402h    BYTE    FAX page size
  7450.         00h A4 (210x297mm)
  7451.         01h B4 (250x353mm)
  7452.         02h A3 (297x420mm)
  7453. 403h    BYTE    FAX resolution
  7454.         00h normal (3.85 pixels/mm)
  7455.         01h high (7.7 pixels/mm)
  7456. 404h    BYTE    FAX coding scheme
  7457.         00h 1-D, modified Huffman coding
  7458.         01h 2-D, modified READ coding
  7459. 405h    BYTE    left margin for text in millimeters
  7460. 406h    BYTE    vertical insertion for text in mm (0-20)
  7461. 407h    BYTE    horizontal insertion in mm (0-20)
  7462. 408h    BYTE    maximum text lines per page
  7463. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  7464. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  7465. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  7466. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  7467. 40Dh 81 BYTEs    cover page logo filename
  7468. 45Eh 65 BYTEs    cover page sender name
  7469. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  7470. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  7471. 4A1h    BYTE    print capture printer port
  7472. 4A2h    BYTE    print capture timer in seconds
  7473. 4A3h    BYTE    scan code for print capture hotkey
  7474. 4A4h    BYTE    shift mask for print capture hotkey
  7475. 4A5h    BYTE    DataShell type
  7476.         00h internal Zmodem, 01h Data Shell, 02h disable
  7477. 4A6h    BYTE    video I/O type
  7478.         00h auto-detect, 01h use BIOS, 02h direct writes
  7479. 4A7h    BYTE    call transfer digits
  7480. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  7481.  
  7482. (Table 1762)
  7483. Values for ZFAX printer type:
  7484.  00h    EPSON FX (9 pins)
  7485.  01h    EPSON LQ (24 pins)
  7486.  02h    HP Laser Jet II, letter size
  7487.  03h    HP Laser Jet II, legal size
  7488.  04h    HP Laser Jet II, A4 size
  7489.  05h    HP Laser Jet III, letter size
  7490.  06h    HP Laser Jet III, legal size
  7491.  07h    HP Laser Jet III, A4 size
  7492.  
  7493. (Table 1763)
  7494. Values for Ring Answer Type:
  7495.  00h    voice system
  7496.  01h    FAX only
  7497.  02h    Data Shell
  7498.  03h    Ring Shell
  7499.  04h    DOS Shell
  7500.  05h    ignore
  7501.  
  7502. (Table 1764)
  7503. Values for DTMF action:
  7504.  00h    none
  7505.  01h    page operator
  7506.  02h    FaxBack
  7507.  03h    announcement
  7508.  04h    call transfer
  7509.  05h    receive FAX
  7510.  06h    receive data
  7511.  07h    voice mailbox
  7512.  08h    DOS Shell Out
  7513.  09h    Data Shell Out
  7514. --------U-2FDB00-----------------------------
  7515. INT 2F U - WINGO.COM - INSTALLATION CHECK
  7516.     AX = DB00h
  7517. Return: AX = FFFFh if installed
  7518.     CX = 5749h ('WI') if installed
  7519.     DX = 4E47h ('NG') if installed
  7520.         ES = segment of resident code
  7521. Program: WINGO.COM is TSR for starting Windows programs from DOS 
  7522.       prompt (together with companion Windows program 
  7523.       WINSTART.EXE) written by Douglas Boling, contributing editor of
  7524.       PC Magazine
  7525. Range:    AH=DBh to AH=FFh, selected by scanning for a free multiplex number
  7526. SeeAlso: AX=DB01h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  7527. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  7528. --------F-2FDB01-----------------------------
  7529. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  7530.     AX = DB01h
  7531. Return: AX = status
  7532.         0000h successful
  7533.         0001h ZFAX is busy
  7534.         0002h another program resident above ZFAX
  7535. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  7536.       not been hooked by other TSRs and releases the TSR's memory
  7537.     ZFAX v2.x crashes the contributor's machine when this function is
  7538.       called
  7539. SeeAlso: AX=DA01h,AX=DB00h
  7540. --------U-2FDB01-----------------------------
  7541. INT 2F U - WINGO.COM - SET CALLBACK FUNCTION POINTER
  7542.     AX = DB01h
  7543.     CX:DX -> new callback function
  7544. Return: AX = 0000h
  7545.     CX:DX -> end of resident code (stack ???)
  7546. Desc:    the callback function is used for WINGO <-> WINSTART communication
  7547. SeeAlso: AX=DB00h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  7548. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  7549. --------F-2FDB02-----------------------------
  7550. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  7551.     AX = DB02h
  7552. Return: AL = 00h
  7553. SeeAlso: AX=DA02h,AX=DB00h,AX=DB03h
  7554. --------U-2FDB02-----------------------------
  7555. INT 2F U - WINGO.COM - RESET CALLBACK FUNCTION POINTER
  7556.     AX = DB02h
  7557. Return: AX = 0000h
  7558. Desc:    the callback function is used for WINGO <-> WINSTART communication
  7559. SeeAlso: AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  7560. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  7561. --------F-2FDB03-----------------------------
  7562. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  7563.     AX = DB03h
  7564. Return: AL = 00h
  7565. SeeAlso: AX=DA03h,AX=DB00h,AX=DB02h
  7566. --------U-2FDB03-----------------------------
  7567. INT 2F U - WINGO.COM - SET ??? FLAG
  7568.     AX = DB03h
  7569. Return: AX = 0000h
  7570. SeeAlso: AX=DB00h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
  7571. --------U-2FDB04-----------------------------
  7572. INT 2F U - WINGO.COM - RESET ??? FLAG
  7573.     AX = DB04h
  7574. Return: AX = 0000h
  7575. SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
  7576. --------U-2FDB05-----------------------------
  7577. INT 2F U - WINGO.COM - GET ??? FLAG
  7578.     AX = DB05h
  7579. Return: AX = 0000h
  7580.     DX = unknown flag - 0 or 1
  7581. Program: WINGO.COM is TSR for starting Windows programs from DOS 
  7582.       prompt (together with companion Windows program 
  7583.       WINSTART.EXE) written by Douglas Boling, contributing editor of
  7584.       PC Magazine
  7585. SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  7586. --------U-2FDB06-----------------------------
  7587. INT 2F U - WINGO.COM - CALL CALLBACK FUNCTION
  7588.     AX = DB06h
  7589. Return: AX = return value of INT 2F/AX=1685h
  7590. Note:    uses Windows service INT 2F/AX=1685h (SWITCH VMs AND CALLBACK) to
  7591.       call the callback function previously set by AX=DB01h
  7592.     used for WINGO <-> WINSTART communication
  7593. SeeAlso: AX=1685h, AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB02h"WINGO",
  7594. SeeAlso: AX=DB03h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO"
  7595. --------F-2FDB10-----------------------------
  7596. INT 2F - ZyXEL ZFAX v3 - EXECUTE ZFAX MAIN MENU
  7597.     AX = DB10h
  7598. --------F-2FDB11-----------------------------
  7599. INT 2F - ZyXEL ZFAX v3 - SEND FAX
  7600.     AX = DB11h
  7601.     DS:SI -> filename including path
  7602.     DS:BX -> remote FAX number
  7603. Return:    AX = status (see #1765)
  7604. SeeAlso: AX=DB12h,AX=DB13h,AX=DB14h,AX=DB20h,AX=DB21h
  7605.  
  7606. (Table 1765)
  7607. Values for ZFAX status:
  7608.  00h    OK
  7609.  01h    invalid DOS function
  7610.  02h    file not found
  7611.  03h    path not found
  7612.  04h    no file handle available
  7613.  05h    access denied by DOS
  7614.  06h    invalid handle
  7615.  07h    disk full
  7616.  10h    printer error
  7617.  11h    no graphics font
  7618.  12h    no ZFAX font
  7619.  20h    DCD dropped while sending
  7620.  21h    not ZyXEL modem
  7621.  22h    busy
  7622.  23h    no response from COM port
  7623.  24h    no carrier
  7624.  25h    no dial tone
  7625.  26h    no answer
  7626.  27h    no response
  7627.  28h    failed to send FAX
  7628.  30h    user aborted
  7629.  40h    critical error on disk
  7630.  50h    parameter error
  7631. --------F-2FDB12-----------------------------
  7632. INT 2F - ZyXEL ZFAX v3 - PRINT FAX
  7633.     AX = DB12h
  7634.     DS:SI -> filename, including path
  7635. Return: AX = status
  7636. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  7637. --------F-2FDB13-----------------------------
  7638. INT 2F - ZyXEL ZFAX v3 - CONVERT FAX
  7639.     AX = DB13h
  7640.     DS:SI -> source filename, including path
  7641.     DS:BX -> destination filename, including path
  7642.     CX = destination file format
  7643.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  7644. Return: AX = status
  7645. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  7646. --------F-2FDB14-----------------------------
  7647. INT 2F - ZyXEL ZFAX v3 - VIEW FAX
  7648.     AX = DB14h
  7649.     DS:SI -> source filename, including path
  7650. Return: AX = status
  7651. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  7652. --------F-2FDB20-----------------------------
  7653. INT 2F - ZyXEL ZFAX v3 - POLL FAX
  7654.     AX = DB20h
  7655.     DS:SI -> remote FAX number
  7656. Return: AX = status
  7657. SeeAlso: AX=DB11h,AX=DB21h
  7658. --------F-2FDB21-----------------------------
  7659. INT 2F - ZyXEL ZFAX v3 - SEND VOICE
  7660.     AX = DB21h
  7661.     DS:SI -> filename including path
  7662.     DS:BX -> remote phone number
  7663. Return:    AX = status
  7664. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  7665. --------F-2FDB22-----------------------------
  7666. INT 2F - ZyXEL ZFAX v3 - CONVERT VOICE FILE
  7667.     AX = DB22h
  7668.     DS:SI -> source filename, including path
  7669.     DS:BX -> destination filename, including path
  7670.     CX = destination format
  7671.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  7672. Return:    AX = status
  7673. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  7674. --------F-2FDB23-----------------------------
  7675. INT 2F - ZyXEL ZFAX v3 - RECORD VOICE FILE
  7676.     AX = DB23h
  7677.     DS:SI -> destination filename, including path
  7678.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  7679.     DX = voice file format
  7680.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  7681. Return: AX = status
  7682. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  7683. --------F-2FDB24-----------------------------
  7684. INT 2F - ZyXEL ZFAX v3 - PLAY VOICE FILE
  7685.     AX = DB24h
  7686.     DS:SI -> name of voice file, including path
  7687.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  7688. Return: AX = status
  7689. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  7690. --------F-2FDB25-----------------------------
  7691. INT 2F - ZyXEL ZFAX v3 - ANSWER MODEM WITH VOICE SYSTEM
  7692.     AX = DB25h
  7693. Return: AX = status
  7694. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  7695. --------F-2FDB26-----------------------------
  7696. INT 2F - ZyXEL ZFAX v3 - DIAL PHONE
  7697.     AX = DB26h
  7698.     DS:SI -> remote phone number
  7699. Return: AX = status
  7700. SeeAlso: AX=DB25h
  7701. --------F-2FDB27-----------------------------
  7702. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  7703.     AX = DB27h
  7704. Return: AX = status
  7705. SeeAlso: AX=DB25h,AX=DB28h
  7706. --------F-2FDB28-----------------------------
  7707. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  7708.     AX = DB28h
  7709. Return: AX = status
  7710. SeeAlso: AX=DB25h,AX=DB27h,AX=DB31h
  7711. --------F-2FDB31-----------------------------
  7712. INT 2F - ZyXEL ZFAX v3 - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  7713.     AX = DB31h
  7714.     DS:SI -> source file name, including path
  7715.     DS:BX -> remote data number
  7716. Return: AX = status
  7717. SeeAlso: AX=DB00h,AX=DB28h
  7718. --------F-2FDB40-----------------------------
  7719. INT 2F - ZyXEL ZFAX v3 - INTERNAL TERMINAL
  7720.     AX = DB40h
  7721. Return: AX = status
  7722. SeeAlso: AX=DB00h
  7723. --------K-2FDC00-----------------------------
  7724. INT 2F - GOLD.COM - INSTALLATION CHECK
  7725.     AX = DC00h
  7726. Return: AL = state
  7727.         00h not installed
  7728.         FFh installed
  7729. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  7730.       for F1; the purpose is to improve Kermit's VTxxx emulation
  7731. --------K-2FDC01-----------------------------
  7732. INT 2F - GOLD.COM - GET STATE
  7733.     AX = DC01h
  7734. Return: AL = status
  7735.         00h off
  7736.         01h on
  7737. SeeAlso: AX=DC00h,AX=DC02h
  7738. --------K-2FDC02-----------------------------
  7739. INT 2F - GOLD.COM - SET STATE
  7740.     AX = DC02h
  7741.     DL = new state
  7742.         00h off
  7743.         01h on
  7744. Return: AL = 00h (OK)
  7745. SeeAlso: AX=DC01h
  7746. --------t-2FDD-------------------------------
  7747. INT 2F - CappaCom programs - API
  7748.     AH = DDh
  7749.     AL = 00h general installation check
  7750.         Return: AL = FFh if any CappaCom programs are resident
  7751.     AL = FEh get info
  7752.         Return: ES:BX -> TSR info list (see #1766)
  7753.     AL = program identifier
  7754.         BH = function
  7755.         FDh get version
  7756.             Return: BX = version
  7757.         FFh installation check
  7758.             Return: AL = FFh if installed
  7759.                 BX = version
  7760.                 ES = segment of resident code
  7761.         others vary by program
  7762. Return: AL = status
  7763.         bit 7 set on error
  7764.         AL = 81h unknown function
  7765. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  7766.       conflict
  7767. Index:    installation check;SoftCom programs
  7768. Index:    installation check;CappaCom programs
  7769.  
  7770. Format of CappaCom TSR info list:
  7771. Offset    Size    Description    (Table 1766)
  7772.  00h  9 BYTEs    blank-padded ASCIZ program name
  7773.  09h    BYTE    program ID
  7774.  0Ah    WORD    program's PSP segment
  7775.  0Ch    WORD    program version (major in high byte)
  7776.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  7777.  12h    BYTE    number of interrupts hooked
  7778.  13h  5 BYTEs    interrupt numbers hooked by program
  7779.  18h  8 BYTEs    reserved
  7780. ----------2FDD-------------------------------
  7781. INT 2F - MIXFIX.EXE - API
  7782.     AH = DDh
  7783.     AL = function
  7784.         00h installation check
  7785.         Return: AX = 00DDh if installed
  7786.                 BX = version (BH = major, BL = minor)
  7787.         41h/61h get From: address
  7788.         Return: AX = 0001h
  7789.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  7790.         49h/69h get To: address
  7791.         Return: AX = 0001h
  7792.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  7793.         4Ah/6Ah get subject of mail
  7794.         Return: AX = 0001h
  7795.             ES:BX -> ASCIZ subject of handled mail
  7796.         4Dh/6Dh get mail name
  7797.         Return: AX = 0001h
  7798.             ES:BX -> ASCIZ full name of current mail file
  7799.         4Eh/6Eh get From: field
  7800.         Return: AX = 0001h
  7801.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  7802. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  7803.       other programs for mail handling.  The called programs may use the
  7804.       services described here to retrieve information about the mail being
  7805.       handled.
  7806. Index: installation check;MIXFIX.EXE
  7807. --------d-2FDD--BX7844-----------------------
  7808. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  7809.     AH = DDh
  7810.     BX = 7844h ('xD')
  7811.     CX = 4953h ('IS')
  7812.     DX = 4B3Fh ('K?')
  7813.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  7814.     ES:DI -> 25-byte data buffer (see #1767)
  7815. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  7816.        BX = 87BBh
  7817.        DX = B4C0h
  7818.        ES:DI buffer filled
  7819.     CX,CF destroyed
  7820. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  7821.  
  7822. Format of xDISK data buffer:
  7823. Offset    Size    Description    (Table 1767)
  7824.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  7825.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  7826.  05h    BYTE    flag: 01h if write protected, 00h if not
  7827.  06h    BYTE    flag: 01h if root directory full, 00h if not
  7828.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  7829.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  7830.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  7831.  0Ah  2 BYTEs    reserved
  7832.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  7833.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  7834.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  7835.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  7836.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  7837.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  7838.  12h    BYTE    flag: 01h terse display, 00h verbose display
  7839.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  7840.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  7841.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  7842.  16h    WORD    count of open files in RAM disk
  7843.  18h    BYTE    unused
  7844. --------Q-2FDE00BX4456-----------------------
  7845. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  7846.     AX = DE00h
  7847.     BX = 4456h ("DV")
  7848.     CX = 5844h ("XD")
  7849.     DX = 4931h ("I1")
  7850. Return: AL = FFh if installed (even if other registers do not match)
  7851.     if BX,CX, and DX were as specified on entry,
  7852.         BX = 4845h ("HE")
  7853.         CX = 5245h ("RE")
  7854.         DX = 4456h ("DV")
  7855. Range:    AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
  7856. Note:    the XDI handler should not issue any DOS or BIOS calls, nor should it
  7857.       issue DESQview API calls other than those allowed from hardware ints
  7858. SeeAlso: AX=DE02h,INT 15/AX=5400h
  7859. --------Q-2FDE01-----------------------------
  7860. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  7861.     AX = DE01h
  7862.     BX = driver ID
  7863.     other registers as needed by driver
  7864. Notes:    XDI drivers should pass this call through to previous handler if ID
  7865.       does not match
  7866.     DESQview never calls this function
  7867. --------Q-2FDE01BX4450-----------------------
  7868. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  7869.     AX = DE01h
  7870.     BX = 4450h ("DP")
  7871.     CX = 4D49h ("MI")
  7872.     DX = 3039h ("09")
  7873. Return: AL = FFh if installed
  7874.         BX = 4D42h ("MB")
  7875.         CX = 4921h ("I!")
  7876.         DX = 8F4Fh
  7877.         ES:DI -> filename of DPMI host overlay
  7878. Note:    the installation check consists of testing for the existence of the
  7879.       character device QDPMI$$$
  7880. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  7881. Index:    installation check;QDPMI
  7882. --------U-2FDE01BX5242-----------------------
  7883. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  7884.     AX = DE01h
  7885.     BX = 5242h ("RB")
  7886.     CX:DX = program identifier
  7887.         656F7000h ("eop",0) for DVeop
  7888. Return: AX = 5242h ("RB") if installed
  7889.         ES:BX -> data or entry point (see #1768)
  7890.         CX = version number (CH = major, CL = minor)
  7891.  
  7892. (Table 1768)
  7893. Call DVeop entry point with:
  7894.     ES:DI -> callback address or 0000h:0000h to remove callback
  7895. Return: AX = status
  7896.         0000h failed (callback table full or attempted to remove non-
  7897.           existent callback)
  7898.         0001h successful
  7899.         ES:DI -> chaining address
  7900.     BX,CX,DX destroyed
  7901. Notes:    the callback function is called with a simulated interrupt when the
  7902.       DESQview window containing it is closed; it should perform all
  7903.       necessary cleanup and then perform a FAR jump to the chaining address
  7904.       or an IRET if the chaining address is 0000h:0000h
  7905.     if the program wishes to remove itself before the window is closed, it
  7906.       should call the DVeop entry point with the previously returned
  7907.       chaining address and ignore the returned chaining address.
  7908. --------U-2FDE01BX7474-----------------------
  7909. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  7910.     AX = DE01h
  7911.     BX = 7474h
  7912.     CL = function
  7913.         00h installation check
  7914.         Return: AL = FFh
  7915.         01h get process handle
  7916.         DX = keys on Open Window menu (DL = first, DH = second)
  7917.         Return: AX = process handle or 0000h if not running
  7918.         02h (v1.3+) set TMAN handle
  7919.         DX = TMAN process handle
  7920.         03h (v1.3+) set open keys to ignore on next CL=01h call
  7921.         DX = keys on Open Window menu (DL = first, DH = second)
  7922. Return: BX = 4F4Bh ("OK")
  7923.     DL destroyed
  7924. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  7925.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  7926. Index:    installation check;DVTXDI
  7927. --------U-2FDE01BX7575-----------------------
  7928. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  7929.     AX = DE01h
  7930.     BX = 7575h
  7931.     CX = function
  7932.         0000h installation check
  7933.         Return: AX = 00FFh if installed
  7934.         0001h turn on notification (currently unused)
  7935.         Return: AX = 0001h
  7936.         0002h turn off notification (currently unused)
  7937.         Return: AX = 0001h
  7938.         0003h get process information
  7939.         Return: AX = status
  7940.                 0000h failed
  7941.                 0001h successful
  7942.                 BX = last instantaneous time slice
  7943.                     in 1/100s (v1.10)
  7944.                     in 1/18s (v1.11+)
  7945.                 CX = number of processes
  7946.                 DX = number of "(starting)" records (v2.00+)
  7947.                 SI = number of records in process info array
  7948.                       (v2.00+) (always 15 for v1.x)
  7949.                 ES:DI -> process info array (see #1769,#1770)
  7950.         0004h get version
  7951.         Return: AH = major version
  7952.             AL = minor version
  7953.         0005h (v1.10+) get time since DESQview started
  7954.         Return: DX:AX = 1/100s since DV start (v1.10)
  7955.             DX:AX = 1/18s since DV start (v1.11+)
  7956.         0006h (v1.10+) get number of task switches
  7957.         Return: DX:AX = total task switches
  7958.             CX = task switches in last instantaneous interval
  7959. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  7960.       Daniel J. Bodoh
  7961.     for v1.00, function 0003h allocates common memory, which the caller
  7962.       must deallocate after reading the process information; only the
  7963.       currently used records are placed in the buffer
  7964.     for v1.10+, function 0003h merely returns a pointer to the internal
  7965.       array of process information; the caller should make a copy of the
  7966.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  7967.       those records with bit 7 of the first byte set are valid.
  7968. Index:    installation check;DVSIXDI
  7969.  
  7970. Format of DVSIXDI v1.00 information for one process:
  7971. Offset    Size    Description    (Table 1769)
  7972.  00h    BYTE    flags
  7973.         bit 7: process slot is valid
  7974.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  7975.           Open Windows menu, else undefined
  7976.  03h    WORD    Switch Windows window number
  7977.  05h    WORD    segment of process handle
  7978.  07h    WORD    number of tasks owned by process
  7979.  09h    WORD    mapping context of process (see #0306 at INT 15/AX=1016h)
  7980.  0Bh    DWORD    hook for other programs
  7981.  
  7982. Format of DVSIXDI v1.10-v2.00 information for one process:
  7983. Offset    Size    Description    (Table 1770)
  7984.  00h    BYTE    process flags (see #1771)
  7985.  01h    WORD    Open Window keys
  7986.  03h    WORD    Switch Windows number
  7987.  05h    WORD    segment of process handle
  7988.  07h    WORD    number of tasks for process
  7989.  09h    WORD    process mapping context
  7990.  0Bh    DWORD    time process started (relative to start of DESQview)
  7991.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  7992.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  7993.  17h    DWORD    total CPU time since process started
  7994.  1Bh    DWORD    CPU time at start of current instantaneous interval
  7995.  1Fh    DWORD    CPU time in current instantaneous interval
  7996.  23h    DWORD    hook for other programs
  7997. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  7998.  
  7999. Bitfields for DVSIXDI process flags:
  8000. Bit(s)    Description    (Table 1771)
  8001.  7    valid record
  8002.  6    (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
  8003.       and only offsets 01h and 09h are valid
  8004.  5    (v2.00+) this app currently owns the CPU
  8005.  4    reserved (0)
  8006.  3    DESQview system task
  8007.  2    reserved (0)
  8008.  1    task has keyboard (currently unused)
  8009.  0    task swapped out (currently unused)
  8010. --------Q-2FDE01BXFFFE-----------------------
  8011. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  8012.     AX = DE01h
  8013.     BX = FFFEh
  8014.     CX = 4D47h ("MG")
  8015.     DX = 0052h (0,"R")
  8016. Return: AL = FFh
  8017.     DX = 584Dh
  8018. --------Q-2FDE02-----------------------------
  8019. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  8020.     AX = DE02h
  8021.     BX = mapping context of DESQview
  8022.     DX = handle of DESQview system task
  8023. Note:    driver should pass this call to previous handler after doing its work
  8024. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  8025. --------Q-2FDE03-----------------------------
  8026. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  8027.     AX = DE03h
  8028.     BX = mapping context of DESQview
  8029.     DX = handle of DESQview system task
  8030. Notes:    driver should pass this call to previous handler before doing its work
  8031.     DESQview makes this call when it is exiting, but before unhooking any
  8032.       interrupt vectors
  8033. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  8034. --------Q-2FDE04-----------------------------
  8035. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  8036.     AX = DE04h
  8037.     BX = mapping context of new process (see #0306 at INT 15/AX=1016h)
  8038.     DX = handle of process
  8039. Return: nothing
  8040. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  8041.       (see #1772) from "common" memory to control access to XMS memory
  8042.     all DOS, BIOS, and DV API calls are valid in handler
  8043.     driver should pass this call to previous handler after processing it
  8044. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  8045.  
  8046. Format of XMS XDI structure:
  8047. Offset    Size    Description    (Table 1772)
  8048.  00h    DWORD    pointer to 10-byte record???
  8049.  04h    DWORD    pointer to next XMS XDI structure
  8050.  08h    WORD    mapping context
  8051.  0Ah    BYTE    ???
  8052.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  8053.         (FAR jump to next field)
  8054.  10h  6 BYTEs    FAR handler for XMS driver entry point
  8055.         (consists of a FAR CALL followed by RETF)
  8056. --------Q-2FDE05-----------------------------
  8057. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  8058.     AX = DE05h
  8059.     BX = mapping context of process (see #0306 at INT 15/AX=1016h)
  8060.     DX = handle of last task in process
  8061. Return: nothing
  8062. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  8063.     driver should pass this call to previous handler before processing it
  8064.     all DOS, BIOS, and DV API calls except those generating a task switch
  8065.       are valid in handler
  8066. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  8067. --------Q-2FDE06-----------------------------
  8068. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  8069.     AX = DE06h
  8070.     BX = mapping context of process containing task
  8071.     DX = handle of new task
  8072. Notes:    driver should pass this call to previous handler after processing it
  8073.     all DOS, BIOS, and DV API calls are valid in handler
  8074. --------Q-2FDE07-----------------------------
  8075. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  8076.     AX = DE07h
  8077.     BX = mapping context of process containing task
  8078.     DX = handle of task
  8079. Notes:    driver should pass this call to previous handler before processing it
  8080.     all DOS, BIOS, and DV API calls except those generating a task switch
  8081.       are valid in handler
  8082. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  8083. --------Q-2FDE08-----------------------------
  8084. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  8085.     AX = DE08h
  8086.     BX = mapping context of task being switched from
  8087.           (see #0306 at INT 15/AX=1016h)
  8088.     DX = handle of task being switched from
  8089. Notes:    invoked prior to task swap, interrupts, etc
  8090.     driver should pass this call to previous handler after processing it
  8091. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  8092. --------Q-2FDE09-----------------------------
  8093. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  8094.     AX = DE09h
  8095.     BX = mapping context of task being switched to
  8096.           (see #0306 at INT 15/AX=1016h)
  8097.     DX = handle of task being switched to
  8098. Notes:    state is restored except for interrupts
  8099.     driver should pass this call to previous handler before processing it
  8100. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  8101. --------Q-2FDE0A-----------------------------
  8102. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  8103.     AX = DE0Ah
  8104.     BX = mapping context of task receiving focus
  8105.     DX = handle of running task
  8106. Notes:    driver should pass this call to previous handler before processing it
  8107.     this call often occurs inside a keyboard interrupt
  8108.     DV 2.42 does not provide this call to XDI handlers running inside a
  8109.       window; instead, it directly calls the INT 2F handler which was
  8110.       active at the time DV started
  8111. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  8112. --------Q-2FDE0B-----------------------------
  8113. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  8114.     AX = DE0Bh
  8115.     BX = mapping context of DESQview system task
  8116.     CX = number of system memory paragraphs required for the use of all
  8117.           XDI drivers (DV will add this to system memory in DVP buffer)
  8118.     DX = handle of DESQview system task
  8119.     SI = mapping context of new process if it starts
  8120.     ES:DI -> DVP buffer
  8121. Return: CX incremented as needed
  8122. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  8123.     driver should pass this call to previous handler before processing it
  8124. --------Q-2FDE0C-----------------------------
  8125. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  8126.     AX = DE0Ch
  8127.     BX = mapping context of task being swapped out
  8128.           (see #0306 at INT 15/AX=1016h)
  8129.     DX = handle of DESQview system task
  8130. Note:    driver should pass this call to previous handler after processing it
  8131. --------Q-2FDE0D-----------------------------
  8132. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  8133.     AX = DE0Dh
  8134.     BX = mapping context of process just swapped in
  8135.           (see #0306 at INT 15/AX=1016h)
  8136.     DX = handle of DESQview system task
  8137. Note:    driver should pass this call to previous handler before processing it
  8138. --------Q-2FDE0E-----------------------------
  8139. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  8140.     AX = DE0Eh
  8141.     BX = mapping context of DESQview system task
  8142.     DX = handle of DESQview system task
  8143.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  8144. Note:    driver should pass this call to previous handler after processing it
  8145. --------Q-2FDE0F-----------------------------
  8146. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  8147.     AX = DE0Fh
  8148. Note:    DESQview 2.50+ calls this function just before it completes its
  8149.       initialization.  At the time of the call, DESQview has not yet
  8150.       changed any interrupt vectors
  8151. SeeAlso: AX=DE02h
  8152. --------Q-2FDE10-----------------------------
  8153. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  8154.     AX = DE10h
  8155.     BX = mapping context of process (see #0306 at INT 15/AX=1016h)
  8156.     DX = task handle of process
  8157. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  8158.       similar to AX=DE07h but allows the XDI handler to make calls which
  8159.       cause context switches
  8160. SeeAlso: AX=DE06h,AX=DE07h
  8161. --------c-2FDF00-----------------------------
  8162. INT 2F - HyperWare programs - INSTALLATION CHECK
  8163.     AX = DF00h
  8164.     BX = product code (see #1773)
  8165.     CX = 0000h
  8166.     DX = 0000h
  8167. Return: AL = status
  8168.         00h not installed
  8169.         FFh multiplex number in use
  8170.         CX = 5948h ('YH') if selected product installed
  8171.         ---HyperDisk---
  8172.         BX = code segment of resident portion
  8173.         DX = HyperDisk local data version
  8174. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  8175. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  8176. SeeAlso: INT 13/AX=8EEDh
  8177. Index:    installation check;HyperDisk|installation check;HyperStb
  8178. Index:    installation check;HyperKey|installation check;HyperScreen
  8179. Index:    HyperDisk;installation check|HyperStb;installation check
  8180. Index:    HyperKey;installation check|HyperScreen;installation check
  8181.  
  8182. (Table 1773)
  8183. Values for HyperWare product code:
  8184.  4248h    ('BH') HyperStb
  8185.  4448h    ('DH') HyperDisk v4.20+
  8186.  4B48h    ('KH') HyperKey
  8187.  5348h    ('SH') HyperScreen
  8188. --------Q-2FDF00BX5445-----------------------
  8189. INT 2F U - Quarterdeck TELTSR.COM - INSTALLATION CHECK
  8190.     AX = DF00h
  8191.     BX = 5445h ('TE')
  8192.     CX = 4C54h ('LT')
  8193.     DX = 5352h ('SR')
  8194. Return: BX = 5454h ('TT') if installed
  8195.     CX = 494Eh ('IN') if installed
  8196.     DX = 5454h ('ST') if installed
  8197. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  8198.       which provides an INT 14h interface to the network
  8199. Range:    AH=DEh to AH=FFh and AH=C0h to AH=DDh, selected by scanning
  8200. SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR",INT 14/AH=56h
  8201. --------N-2FDF01BX0000-----------------------
  8202. INT 2F U - MSG.COM - INSTALLATION CHECK
  8203.     AX = DF01h
  8204.     BX = 0000h
  8205. Return: AX = FDFFh if installed
  8206.        BX = segment of resident code
  8207. Program: MSG.COM is a TSR for intercepting incoming Novell broadcast 
  8208.       messages written by Gary Dobbins (Dobbins@Arizona.Edu)
  8209. --------c-2FDF01BX4448-----------------------
  8210. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  8211.     AX = DF01h
  8212.     BX = 4448h ('DH')
  8213. Return: AX = 0000h if function supported
  8214.         BX = number of cache buffers in use
  8215.         CX = number of cache buffers which have been modified
  8216.         DL = caching flags (see #1774)
  8217. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  8218. SeeAlso: AX=DF00h,AX=DF02h
  8219.  
  8220. Bitfields for HyperDisk caching flags:
  8221. Bit(s)    Description    (Table 1774)
  8222.  0    staged writes enabled for floppy disks
  8223.  1    staged writes enabled for hard disks
  8224.  2    writes verified on floppy disks
  8225.  3    writes verified on hard disks
  8226.  4    reserved (0)
  8227.  5    reserved (0)
  8228.  6    floppy caching enabled
  8229.  7    all caching functions enabled
  8230. --------Q-2FDF01-----------------------------
  8231. INT 2F U - Quarterdeck TELTSR.COM - CLOSE CONNECTION
  8232.     AX = DF01h
  8233. Return: nothing???
  8234. Note:    invokes the DESQview/X socket API (see INT 15/AX=DE2Eh) function 0006h
  8235.       to close the socket corresponding to the file handle set with
  8236.       AX=DF02h; NOP if no file handle was ever set
  8237. SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
  8238. --------c-2FDF02BX4448-----------------------
  8239. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  8240.     AX = DF02h
  8241.     BX = 4448h ('DH')
  8242.     DL = new caching flags (see #1774)
  8243. Return: AX = 0000h if supported
  8244.         BX = number of cache buffers in use
  8245.         CX = number of cache buffers which have been modified
  8246.         DL = previous caching flags (see #1774)
  8247. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  8248. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  8249. SeeAlso: AX=DF00h,AX=DF01h
  8250. --------Q-2FDF02-----------------------------
  8251. INT 2F U - Quarterdeck TELTSR.COM - OPEN CONNECTION
  8252.     AX = DF02h
  8253.     BX = file handle for connection's socket
  8254. Return: AX = status
  8255.         0000h successful
  8256.         FFFFh no more room in TELTSR's JFT
  8257. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  8258. Notes:    the indicated file handle becomes owned by TELTSR, and is closed in
  8259.       the caller's JFT
  8260.     multiple calls to this function will override the previous assignment
  8261.       without closing the previous file; use AX=DF01h before further calls
  8262. SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
  8263. --------U-2FE000-----------------------------
  8264. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  8265.     AX = E000h
  8266. Return: AX = 4A52h ("JR") if present
  8267. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  8268.       apparent DOS version analogously to MS-DOS SETVER
  8269. Note:    this installation check differs from the usual one of returning AL=FFh
  8270. SeeAlso: AX=E001h,INT 21/AH=52h
  8271. --------K-2FE000DX5354-----------------------
  8272. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  8273.     AX = E000h
  8274.     DX = 5354h ("ST")
  8275. Return: AL = FFh if installed
  8276.         BX = version (BH = major, BL = BCD minor)
  8277.         DX = segment of resident code
  8278. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  8279. --------U-2FE001-----------------------------
  8280. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  8281.     AX = E001h
  8282. Return: AH = major version
  8283.     AL = minor version
  8284. SeeAlso: AX=E000h
  8285. --------U-2FE002-----------------------------
  8286. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  8287.     AX = E002h
  8288. Return: AL = FFh if successful
  8289.         BH = major DOS version
  8290.         BL = minor DOS version
  8291.         CH = DOS version flag
  8292.         CL = OEM number
  8293.         DH = major DR-DOS version number (FFh if unknown)
  8294.         DL = minor DR-DOS version number (FFh if unknown)
  8295. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  8296. --------U-2FE003-----------------------------
  8297. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  8298.     AX = E003h
  8299.     BH = new major DOS version
  8300.     BL = new minor DOS version
  8301.     CH = new DOS version flag
  8302.     CL = new DOS revision number
  8303.     DH = new OEM number
  8304. SeeAlso: AX=E002h
  8305. --------U-2FE004-----------------------------
  8306. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  8307.     AX = E004h
  8308. Return: AL = FFh if successful
  8309. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  8310. --------U-2FE005-----------------------------
  8311. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  8312.     AX = E005h
  8313. Return: AL = FFh if successful
  8314. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  8315. --------U-2FE006-----------------------------
  8316. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  8317.     AX = E006h
  8318. Return: AL = FFh if successful
  8319.         BL = status
  8320.         01h resident and active
  8321.         02h resident and inactive
  8322. --------U-2FE007-----------------------------
  8323. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  8324.     AX = E007h
  8325. Return: AL = FFh if successful
  8326.         BL = status
  8327.         00h if TaskMAX not loaded before SETDRVER
  8328.         FFh if TaskMAX was loaded before SETDRVER
  8329. SeeAlso: AX=E003h
  8330. --------U-2FE0-------------------------------
  8331. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  8332.     AH = E0h
  8333.     AL = 08h-10h
  8334. --------K-2FE100-----------------------------
  8335. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  8336.     AX = E100h
  8337. Return: AX = 0001h if installed
  8338.         DS:SI -> ASCIZ hotkey name
  8339.         DS:DI -> ASCIZ recording filename
  8340. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  8341.       by P2 Enterprises
  8342. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  8343. Index:    hotkeys;Phantom2
  8344. --------K-2FE101-----------------------------
  8345. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  8346.     AX = E101h
  8347.     BX = function mask (see #1775)
  8348.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  8349.     DS:DX -> ASCIZ filespec if BX bit 7 set
  8350. SeeAlso: AX=E100h
  8351. Index:    hotkeys;Phantom2
  8352.  
  8353. Bitfields for Phantom2 function mask:
  8354. Bit(s)    Description    (Table 1775)
  8355.  0    record
  8356.  1    play
  8357.  2    QuickPlay
  8358.  3    loop
  8359.  4    mode display toggle
  8360.  5    sound toggle
  8361.  6    set hotkey
  8362.  7    set filespec
  8363. --------K-2FE102-----------------------------
  8364. INT 2F - Phantom2 v1.1+ - UNINSTALL
  8365.     AX = E102h
  8366. Return: AX = status
  8367.         0001h removal successful
  8368.         0002h not installed as TSR
  8369.         FFFFh disabled but not removed
  8370. SeeAlso: AX=E100h
  8371. --------K-2FE103-----------------------------
  8372. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  8373.     AX = E103h
  8374. Return: AX = 0001h
  8375. SeeAlso: AX=E100h
  8376. --------y-2FE200-----------------------------
  8377. INT 2F - SecureDevice - LOGIN TO DRIVE
  8378.     AX = E200h
  8379.     DL = drive number (0 = A:)
  8380.     DS:SI -> 104-byte key
  8381. Return: AL = status
  8382.         00h unable to determine key's validity
  8383.         01h key is valid
  8384.         FFh key is invalid
  8385. Program: SecureDevice is a copylefted device driver by Max Loewenthal and
  8386.       Arthur Helwig which turns one or more disk files into encrypted
  8387.       logical drives
  8388. SeeAlso: AX=E201h,AX=E203h,AX=E209h
  8389. --------y-2FE201-----------------------------
  8390. INT 2F - SecureDevice - GET INFORMATION
  8391.     AX = E201h
  8392.     DX = driver index (0000h = first loaded)
  8393. Return: AL = number of volumes handled by driver
  8394.     DL = drive number of first volume (00h = A:)
  8395. SeeAlso: AX=E200h,AX=E203h,AX=E209h
  8396. --------y-2FE203-----------------------------
  8397. INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
  8398.     AX = E203h
  8399.     DL = drive number (00h = A:) or FFh for all drives
  8400. Return: nothing
  8401. SeeAlso: AX=E200h,AX=E209h
  8402. --------y-2FE209DX0000-----------------------
  8403. INT 2F - SecureDevice - INSTALLATION CHECK
  8404.     AX = E209h
  8405.     DX = 0000h
  8406. Return: AX = 1DEAh if installed
  8407.         DX = number of drivers installed
  8408. --------K-2FE300-----------------------------
  8409. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  8410.     AX = E300h
  8411. Return: AL = state
  8412.         00h not installed
  8413.         FEh if installed but suspended (v3.0+)
  8414.         FFh installed
  8415. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  8416. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8417. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  8418. SeeAlso: AX=E307h,INT 66"Newkey"
  8419. --------V-2FE300-----------------------------
  8420. INT 2F - Blank - INSTALLATION CHECK
  8421.     AX = E300h
  8422. Return: AL = FFh if installed
  8423.         ES = resident code segment
  8424. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  8425. Note:    AH=E3h is the default, which may be reconfigured by the installation
  8426.       program in the registered version
  8427. SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
  8428. Index:    screen saver;Blank
  8429. --------K-2FE301-----------------------------
  8430. INT 2F U - ANARKEY.COM v2+ - GET ???
  8431.     AX = E301h
  8432. Return: DX:BX -> ??? (see #1776,#1777)
  8433. SeeAlso: AX=E300h
  8434.  
  8435. Format of returned data structure for ANARKEY v2.0:
  8436. Offset    Size    Description    (Table 1776)
  8437.  -7   7 BYTEs    signature ('ANARKEY')
  8438.  00h    WORD    ??? (I see 0001h in v2.0)
  8439.  02h    WORD    ??? (I see 0001h in v2.0)
  8440.  04h    WORD    ??? (I see 0 in v2.0)
  8441.  06h    WORD    PSP segment of next program loaded
  8442.  
  8443. Format of returned data structure for ANARKEY v3+:
  8444. Offset    Size    Description    (Table 1777)
  8445.  -1    BYTE    multiplex number
  8446.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  8447.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  8448.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  8449.  05h    WORD    PSP segment of next program loaded
  8450. --------K-2FE302-----------------------------
  8451. INT 2F U - ANARKEY.COM v3+ - ???
  8452.     AX = E302h
  8453.     BL = ???
  8454. Return: ???
  8455. SeeAlso: AX=E300h
  8456. --------K-2FE303-----------------------------
  8457. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  8458.     AX = E303h
  8459.     BL = function
  8460.         01h toggle insert mode
  8461.         02h display contents of history buffer
  8462.         03h write history buffer to file
  8463.         ES:DX -> file name
  8464.         04h clear history buffer
  8465.         05h undefine all aliases
  8466.         06h show aliases
  8467.         07h list programs using Unix switchar
  8468.         08h jump to bottom of history buffer
  8469.         09h (v4.0) add string to history buffer
  8470.         ES:DX -> ASCIZ string
  8471.         0Ah (v4.0) ???
  8472.         ES:DX -> ???
  8473.         0Bh (v4.0) copy string to edit buffer for use as next input line
  8474.         ES:DX -> ASCIZ string
  8475.         0Ch (v4.0) ???
  8476.         0Dh (v4.0) copy ??? to ???
  8477.         0Eh (v4.0) ???
  8478.         0Fh (v4.0) ???
  8479.         10h (v4.0) set ??? flag
  8480.         11h (v4.0) display error message about running in EMS under Windows
  8481. Return: ???
  8482. SeeAlso: AX=E300h
  8483. --------K-2FE304-----------------------------
  8484. INT 2F U - ANARKEY.COM v2+ - ???
  8485.     AX = E304h
  8486.     BL = ???
  8487. Return: ???
  8488. SeeAlso: AX=E300h
  8489. --------K-2FE305-----------------------------
  8490. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  8491.     AX = E305h
  8492.     BL = new state
  8493.         01h suspended
  8494.         00h enabled
  8495. SeeAlso: AX=E300h
  8496. --------K-2FE306-----------------------------
  8497. INT 2F U - ANARKEY.COM v4.0 - GET ???
  8498.     AX = E306h
  8499. Return: AX = ???
  8500. SeeAlso: AX=E300h
  8501. --------K-2FE307-----------------------------
  8502. INT 2F U - ANARKEY.COM v4.0 - GET ???
  8503.     AX = E307h
  8504. Return: AX = ???
  8505.     BL = ???
  8506. SeeAlso: AX=E300h
  8507. --------l-2FE44D-----------------------------
  8508. INT 2F - NDOS - API
  8509.     AX = E44Dh
  8510. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  8511.       Norton Utilities
  8512. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  8513.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  8514.       check returns AX=44EEh instead of AX=44DDh
  8515. SeeAlso: AX=D44Dh,AX=E44Eh
  8516. --------l-2FE44E-----------------------------
  8517. INT 2F C - NDOS - AWAITING USER INPUT
  8518.     AX = E44Eh
  8519.     BX = condition
  8520.         0000h NDOS is ready to display prompt
  8521.         0001h NDOS has displayed the prompt, about to accept user input
  8522. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  8523. SeeAlso: AX=E44Dh
  8524. --------K-2FE44FBX0000-----------------------
  8525. INT 2F - NDOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  8526.     AX = E44Fh
  8527.     BX = 0000h
  8528. Return: AX = 44EEh if installed
  8529. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  8530.       Norton Utilities
  8531. Note:    this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  8532.       which emulate the 4DOS and NDOS keystack
  8533. SeeAlso: AX=D44Fh/BX=0000h,AX=E44Fh/BX=0001h
  8534. --------K-2FE44FBX0001-----------------------
  8535. INT 2F - NDOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  8536.     AX = E44Fh
  8537.     BX = 0001h
  8538.     CX = number of keystrokes (01h-FFh)
  8539.     DS:DX -> keystroke list (one word per keystroke)
  8540. Return: AX = status
  8541.         0000h successful
  8542.         nonzero failed
  8543.     BX,CX,DX destroyed
  8544. Notes:    the keystrokes are the exact values to return from subsequent calls to
  8545.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  8546.         0000h causes subfunctions 01h and 11h to indicate an empty
  8547.               keyboard buffer
  8548.         FFFFh is followed by a word indicating the number of clock
  8549.               ticks to delay before the next faked keystroke
  8550.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  8551.       invocation, and does not range-check CX; it will overwrite memory
  8552.       following the resident portion if CX is greater than 100h.
  8553.     this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  8554.       which emulate the 4DOS and NDOS keystack
  8555. SeeAlso: AX=E44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  8556. --------E-2FED00-----------------------------
  8557. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  8558.     AX = ED00h
  8559.     BL = DOS extender ID (see #1778)
  8560. Return: AL = status
  8561.         00h not installed
  8562.         FFh installed
  8563.         SI = 5048h ("PH")
  8564.         DI = 4152h ("AR")
  8565.         CH = major version number
  8566.         CL = minor version number
  8567.         DX = flags
  8568.             bit 0: running under DPMI
  8569.             bit 1: running under Phar Lap VMM
  8570.         if running under DPMI:
  8571.             BX = DPMI version (BH = major, BL = minor)
  8572. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  8573.  
  8574. (Table 1778)
  8575. Values for Phar Lap DOS extender ID:
  8576.  01h    286dosx v1.3+ (Software Development Kit)
  8577.  02h    286dosx v1.3+ (Run-Time Kit)
  8578.  03h    386dosx v4.0+ (SDK)
  8579.  04h    386dosx v4.0+ (RTK)
  8580. --------E-2FED03-----------------------------
  8581. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  8582.     AX = ED03h
  8583.     CX = real-mode code segment
  8584.     DX = real-mode data segment
  8585. Return: CF clear if successful
  8586.         CX = protected-mode code segment selector
  8587.         DX = protected-mode data segment selector
  8588.         ES:DI -> real-mode entry point for calling protected-mode functions
  8589.               (see INT 21/AX=250Dh)
  8590.     CF set on error
  8591.         AX = error code
  8592.         0008h unable to allocate LDT descriptors
  8593. --------E-2FED10BL05-------------------------
  8594. INT 2F - Pharlap DOS Extender - ???
  8595.     AX = ED10h
  8596.     BL = 05h
  8597.     ES:SI -> ??? structure
  8598. Return:    AX = ???
  8599.     SI = ???
  8600.     DI = ???
  8601. SeeAlso: AX=ED00h,AX=ED11h
  8602. --------E-2FED11BL05-------------------------
  8603. INT 2F - Pharlap DOS Extender - FATAL EXIT TO REAL MODE ???
  8604.     AX = ED11h
  8605.     BL = 05h
  8606.     CX = ???
  8607.     DX = ???
  8608.     ES:SI -> ??? structure
  8609.     SS:SP = new stack ???
  8610. Return: ???
  8611. Note:    called immediately prior to terminating program with INT 21/AX=4CFFh
  8612. SeeAlso: AX=ED00h,AX=ED10h
  8613. --------K-2FED58-----------------------------
  8614. INT 2F U - K5.COM - INSTALLATION CHECK
  8615.     AX = ED58h
  8616. Return: AX = 000Dh if installed
  8617.         BX = 9999h if driver active
  8618.         ???
  8619. Program: K5 is an extended keyboard driver by Martin Gerdes, based on his K3
  8620. SeeAlso: INT 16/AX=AF20h
  8621. --------E-2FED80-----------------------------
  8622. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  8623.     AX = ED80h
  8624.     BL = DOS extender ID (see #1778)
  8625.     SI = 5048h ("PH")
  8626.     DI = 4152h ("AR")
  8627.     ???
  8628. Return: ???
  8629. --------y-2FEE00-----------------------------
  8630. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  8631.     AX = EE00h
  8632. Return: AL = FFh if installed
  8633. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  8634. SeeAlso: INT 21/AH=40h"NB.SYS"
  8635. --------U-2FEE00-----------------------------
  8636. INT 2F - XVIEW - INSTALLATION CHECK
  8637.     AX = EE00h
  8638. Return: AX = 00FFh if installed
  8639. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  8640. --------N-2FEE00-----------------------------
  8641. INT 2F - WEB v4.02 - INSTALLATION CHECK
  8642.     AX = EE00h
  8643. Return: AL = status
  8644.         00h not installed
  8645.         FFh installed
  8646. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  8647. SeeAlso: AH=EEh"WEB",AX=EEF0h
  8648. --------U-2FEE01-----------------------------
  8649. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  8650.     AX = EE01h
  8651.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  8652. Return: AX = status (see #1779)
  8653. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  8654.       database; the current database is searched first
  8655. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  8656.  
  8657. (Table 1779)
  8658. Values for XVIEW function status:
  8659.  0000h    successful
  8660.  00F1h    unknown subfunction
  8661.  00F2h    unable to pop up
  8662. --------U-2FEE02-----------------------------
  8663. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  8664.     AX = EE02h
  8665.     DX = physical page number or anchor page number (see #1780)
  8666. Return: AX = status (see #1779)
  8667. Note:    physical page numbers are assigned by the hypertext compiler, and
  8668.       will change if a page is inserted in the middle
  8669. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  8670.  
  8671. (Table 1780)
  8672. Values for XVIEW anchor page number:
  8673.  FFEAh    _Credits
  8674.  FFECh    _SearchTopics
  8675.  FFEDh    _SearchText
  8676.  FFF0h    _ManualList
  8677.  FFF5h    _HelpOnHelp
  8678.  FFF8h    _HomePage
  8679.  FFF9h    _IndexPage
  8680. --------U-2FEE03-----------------------------
  8681. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  8682.     AX = EE03h
  8683.     DS:DX -> data packet (see #1781)
  8684. Return: AX = status (see #1779)
  8685. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  8686.  
  8687. Format of XVIEW data packet:
  8688. Offset    Size    Description    (Table 1781)
  8689.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  8690.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  8691.  08h    WORD    page number (0000h if keyword used)
  8692.  0Ah  6 BYTEs    reserved
  8693. --------U-2FEE04-----------------------------
  8694. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  8695.     AX = EE04h
  8696. Return: AX = status (see #1779)
  8697. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  8698. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  8699. --------U-2FEE05-----------------------------
  8700. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  8701.     AX = EE05h
  8702. Return: AX = status (see #1779)
  8703. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  8704. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  8705. --------U-2FEE06-----------------------------
  8706. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  8707.     AX = EE06h
  8708. Return: AX = status (see also AX=EE01h)
  8709.         0001h specified filename is not an xText database
  8710.         0002h no databases found
  8711.         0003h bad data in file
  8712.         0004h memory shortage
  8713.         0005h unable to open the requested file
  8714.         0007h invalid page number for file
  8715. Note:    although this call is not required, the exit code can alert the
  8716.       caller to problems; if the call is not made, the program should
  8717.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  8718.       and should not get keyboard input or attempt disk accesses during
  8719.       the delay
  8720. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  8721. --------N-2FEE-------------------------------
  8722. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  8723.     AH = EEh
  8724.     AL = module ID (see #1782)
  8725. Return: AX = 0000h if installed
  8726.         ES:DI -> far entry point for module-specific API calls
  8727.           (see #1783,#1784,#1785,#1786,#1787)
  8728. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  8729. SeeAlso: AX=EE00h"WEB"
  8730.  
  8731. (Table 1782)
  8732. Values for WEB module ID:
  8733.  10h    server module (SERVER.EXE)
  8734.  20h    client module (CLIENT.EXE)
  8735.  30h    mail module (MAIL.EXE)
  8736.  40h    spooler (PCSPOOL.EXE)
  8737.  50h    kernel module (KERNEL.EXE)
  8738.  60h    SAP module (KERNEL.EXE)
  8739.  70h    resident station manager (SM.EXE)
  8740.  90h    router module (ROUTER.EXE)
  8741.  
  8742. (Table 1783)
  8743. Call server module entry point with:
  8744.     BX = function
  8745.         0000h remove server module
  8746.         Return: AX = status (0000h if successful, else WEB error code)
  8747.         0001h create SYSINFO file
  8748.         Note:    the SYSINFO file is used by the station manager when
  8749.               displaying info for a particular station
  8750.         0002h get server object table
  8751.         Return: CX = number of server objects
  8752.             ES:DI -> server object table
  8753.         Note:    server objects include drives and devices that the
  8754.               server module controls
  8755.         0003h get server variables
  8756.         Return: ES:DI -> server variables
  8757.  
  8758. (Table 1784)
  8759. Call client module entry point with:
  8760.     BX = function
  8761.         0000h remove client module
  8762.         Return: AX = status (0000h if successful, else WEB error code)
  8763.         0001h decrement client-only flag
  8764.         0002h increment client-only flag
  8765.         0005h set device capture
  8766.         Note:    decrements DeviceOutput flag, telling the spooler that
  8767.               it may trap device output again
  8768.         0006h clear device capture
  8769.         Note:    increments DeviceOutput flag, telling the spooler that
  8770.               it should not trap device output (this is used
  8771.               internally by the spooler to prevent it from trapping
  8772.               its own output)
  8773.         0007h get client debug pointer
  8774.         Return: ES:DI -> client debug data structure (see #1788)
  8775.         0008h get root drive
  8776.         Return: AL = WEB startup drive
  8777.         0009h get maximum possible drive/device redirections
  8778.         Return: AL = maximum drive redirections
  8779.             CH = maximum LPTx redirections
  8780.             CL = maximum COMx redirections
  8781.         000Ah suspend client
  8782.         Return: AX = previous value of Suspend flag
  8783.         000Bh resume client
  8784.         Return: AX = previous value of Suspend flag
  8785.         000Ch get instance data
  8786.         CX = maximum number of structures in array
  8787.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  8788.               (see #1789)
  8789.         Return: CX = number of structures actually returned
  8790.         Note:    used internally by WEB4WIN
  8791.  
  8792. (Table 1785)
  8793. Call mail module entry point with:
  8794.     BX = function
  8795.         0000h remove mail module
  8796.         Return: AX = status (0000h successful, else WEB error code)
  8797.         0001h set mail poll
  8798.         Note:    schedules the WEB mail module
  8799.         0002h set mail notify
  8800.         Note:    sets the Notify flag, which determines whether the
  8801.               user will be notified when mail is received
  8802.         0003h clear mail notify
  8803.         Note:    clears the Notify flag, which determines whether the
  8804.               user will be notified when mail is received
  8805.         0004h check whether new mail has arrived
  8806.         Return: AL = new mail status
  8807.                 00h no new mail since last call
  8808.                 else new mail has arrived
  8809.         Note:    also clears the new-mail flag after retrieving it
  8810.         0005h send notify
  8811.         ES:DI -> name of WEB user to be notified
  8812.         0006h get post office
  8813.         Return: ES:DI -> full network path of Post Office subdirectory
  8814.  
  8815. (Table 1786)
  8816. Call spooler entry point with:
  8817.     BX = function
  8818.         0000h remove PCSpool module
  8819.         Return: AX = status (0000h successful, else WEB error code)
  8820.         0001h set spooler poll
  8821.         Note:    schedules the WEB spooler
  8822.         0002h check spooler changed
  8823.         Return:    AX = 0000h
  8824.         Note:    this call is a NOP in current versions of WEB
  8825.  
  8826. (Table 1787)
  8827. Call kernel entry point with:
  8828.     BX = function
  8829.         0000h remove kernel module
  8830.         Return: AX = status (0000h successful, else WEB error code)
  8831.         0001h set kernel ^S filter
  8832.         DL = new state (00h don't filter ^S, nonzero do filter)
  8833.         0002h get kernel data area
  8834.         Return: ES:DI -> kernel data area
  8835.         0003h display dialog box
  8836.         CL = dialog box type
  8837.             00h password
  8838.             01h E-Note received notification
  8839.             02h Novell login
  8840.             03h general notification
  8841.         DL = number of rows to display
  8842.         ES:SI -> array of far pointers to rows to be displayed
  8843.         ES:DI -> Pascal-style input buffer
  8844.         Return: AX = status (0000h successful, else error code)
  8845.         0004h kernel service events
  8846.         0005h get kernel's in-critical-section flag
  8847.         Return: ES:DI -> kernel InCriticalSection flag
  8848.         0006h schedule DOS event
  8849.         AL = directive
  8850.             00h do not ignore WEB ExtraBusy flag
  8851.             01h ignore ExtraBusy flag
  8852.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  8853.         ES:SI -> WEB AES Event Control Block (ECB) (see #1790)
  8854.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  8855.               one used by IPX; this call schedules a special ECB
  8856.               to be executed at a later time.  Unlike IPX ECBs,
  8857.               the timeout must be set explicitly by the caller
  8858.             this function also calls function 0004h
  8859.         0007h check busy
  8860.         AL = directive
  8861.             00h do not ignore WEB ExtraBusy flag
  8862.             01h ignore ExtraBusy flag
  8863.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  8864.         Return: AX = status (0000h not busy, else busy)
  8865.         0008h set keyboard intercept
  8866.         Note:    currently a NOP which returns immediately
  8867.         0009h get keyboard intercept
  8868.         Note:    currently a NOP which returns immediately
  8869.         000Ah get dialog flags
  8870.         Return: ES:DI -> kernel dialog flags (see #1791)
  8871.         000Bh get network path
  8872.         Return: ES:DI -> fully-qualified network path of file where
  8873.                 the screen is stored on Dialog calls
  8874.         000Ch kernel alternate dialog
  8875.         CL = dialog box type
  8876.             00h password
  8877.             01h E-Note received notification
  8878.             02h Novell login
  8879.             03h general notification
  8880.         DL = number of rows to display
  8881.         ES:SI -> array of far pointers to rows to be displayed
  8882.         ES:DI -> Pascal-style input buffer
  8883.         Return: AX = status (0000h successful, else error code)
  8884.         Note:    this function is identical to function 0003h except
  8885.               that it does not notify WEB4WIN of the impending
  8886.               dialog request
  8887.         000Dh get machine/operating system type
  8888.         Return: AX = machine/operating system type
  8889.                 01h IBM PC, MS-DOS
  8890.                 02h IBM PC, DOSV (Japanese)
  8891.                 03h NEC PC-9800, JDOS (Japanese)
  8892.                 04h IBM PC, Korean DBC DOS
  8893.  
  8894. Format of client debug data structure:
  8895. Offset    Size    Description    (Table 1788)
  8896.  00h    WORD    total files
  8897.  02h    WORD    files free
  8898.  04h    WORD    no files
  8899.  06h    WORD    minimum files
  8900.  08h    WORD    total FCBs
  8901.  0Ah    WORD    total safe FCBs
  8902.  0Ch    WORD    FCBs in use
  8903.  0Eh    WORD    wrong FCB
  8904.  10h    WORD    compressed
  8905.  12h    WORD    retransmits
  8906.  
  8907. Format of WIN_INSTANCE_DATA structure:
  8908. Offset    Size    Description    (Table 1789)
  8909.  00h    DWORD    real-mode pointer to data to be instanced
  8910.  04h    WORD    size of data to be instanced
  8911.  
  8912. Format of WEB AES Event Control Block:
  8913. Offset    Size    Description    (Table 1790)
  8914.  00h    DWORD    link address
  8915.  04h    WORD    ESR address
  8916.  08h    BYTE    InUse flag
  8917.  09h    BYTE    completion code
  8918.  0Ah  3 BYTEs    reserved
  8919.  0Dh    WORD    timeout
  8920.  0Fh    BYTE    IgnoreExtra flag
  8921.  10h    WORD    PSP
  8922.  12h    DWORD    DTA
  8923.  16h    WORD    AX value for DOS critical information
  8924.  18h    WORD    BX value for DOS critical information
  8925.  1Ah    WORD    CX value for DOS critical information
  8926.  1Ch    WORD    DX value for DOS critical information
  8927.  
  8928. (Table 1791)
  8929. Values for kernel dialog flags:
  8930.  01h    dialog will timeout
  8931.  02h    display stars instead of entered keystrokes
  8932. --------N-2FEEF0-----------------------------
  8933. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  8934.     AX = EEF0h
  8935.     BX = notification function ID (see #1792)
  8936. Return: varies by notification function
  8937. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  8938. Note:    the notification functions are used internally by WEB modules to notify
  8939.       other modules and external programs of actions or event, and should
  8940.       never be called by an application
  8941. SeeAlso: AX=EE00h"WEB"
  8942.  
  8943. (Table 1792)
  8944. Values for WEB Notification Function ID:
  8945.  00h    node added
  8946.  01h    node deleted
  8947.  02h    dial attempt
  8948.  03h    dial failed
  8949.  04h    file close
  8950.  05h    close connection
  8951.  07h    check Windows mode
  8952.  20h    link up
  8953.  21h    link down
  8954. --------K-2FF000-----------------------------
  8955. INT 2F U - 4MAP - INSTALLATION CHECK
  8956.     AX = F000h
  8957. Return: AX = 00FFh
  8958. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  8959. Note:    returns AX=00FFh for any value of AL not listed here
  8960. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  8961. --------K-2FF001-----------------------------
  8962. INT 2F U - 4MAP - GET KEY MAPPINGS
  8963.     AX = F001h
  8964. Return: ES:BX -> key mappings
  8965. SeeAlso: AX=F000h
  8966. --------K-2FF002-----------------------------
  8967. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  8968.     AX = F002h
  8969.     BL = character to insert
  8970. Return: AX = status
  8971.         0000h successful
  8972.         0001h buffer full
  8973. SeeAlso: AX=F000h,AX=F003h
  8974. --------K-2FF003-----------------------------
  8975. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  8976.     AX = F003h
  8977.     BL = character to insert
  8978. Return: AX = status
  8979.         0000h successful
  8980.         0001h buffer full
  8981. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  8982. SeeAlso: AX=F000h,AX=F002h
  8983. --------m-2FF1-------------------------------
  8984. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  8985.     AH = F1h
  8986.     AL <> F1h
  8987. Return: AL = F1h if installed
  8988. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  8989.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  8990.       TSR at a time is brought back into memory at the user's request.
  8991. --------E-2FF100-----------------------------
  8992. INT 2F - DOS EXTENDER INSTALLATION CHECK
  8993.     AX = F100h
  8994. Return: AL = FFh if DOS extender present
  8995.         SI = 444Fh ("DO")
  8996.         DI = 5358h ("SX")
  8997. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  8998. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  8999. --------W-2FF200-----------------------------
  9000. INT 2F - WINX - INSTALLATION CHECK
  9001.     AX = F200h
  9002. Return: AX = 00FFh if installed
  9003. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  9004.       launch Windows applications from a DOS Box; it was published in
  9005.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  9006.       (Addison-Wesley) and should not be confused with the Windows driver
  9007.       of the same name which is part of the DESQview/X package
  9008. --------W-2FF201-----------------------------
  9009. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  9010.     AX = F201h
  9011. Return: AX = status
  9012.         FFFFh if WINX is busy processing a different request
  9013.         0000h if successful
  9014.         BX:CX = address of server buffer (see #1793)
  9015.  
  9016. Format of WINX server buffer:
  9017. Offset    Size    Description    (Table 1793)
  9018.  00h    BYTE    command/status
  9019.         00h buffer available
  9020.         01h buffer contains result
  9021.         02h change directory
  9022.         03h execute program
  9023.         FFh terminate windows portion of WINX
  9024.  01h  ? BYTEs    command (03h) or directory (02h)
  9025.   or
  9026.  01h    DWORD    result (01h)
  9027. --------W-2FF202-----------------------------
  9028. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  9029.     AX = F202h
  9030.     BX:CX -> directory
  9031. Return: AX = status
  9032.         FFFFh if WINX is busy processing a different request
  9033.         0000h if successful
  9034. SeeAlso: AX=F200h,AX=F203h
  9035. --------W-2FF203-----------------------------
  9036. INT 2F - WINX - EXECUTE COMMAND
  9037.     AX = F203h
  9038.     BX:CX -> command
  9039. Return: AX = status
  9040.         0000h if successful
  9041.         FFFFh if WINX is busy processing a different request
  9042. SeeAlso: AX=F200h,AX=F202h
  9043. --------G-2FF400-----------------------------
  9044. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  9045.     AX = F400h
  9046. Return: AL = 01h if installed
  9047. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  9048.       of PC Magazine; when run as a TSR it can determine which IRQs are
  9049.       used only when a device is active
  9050. SeeAlso: AX=F401h
  9051. --------G-2FF401CX5121-----------------------
  9052. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  9053.     AX = F401h
  9054.     CX = 5121h ('Q!')
  9055. Return: AX:DX -> hooked interrupt table (see #1794)
  9056. SeeAlso: AX=F400h
  9057.  
  9058. Format of FINDIRQ hooked interrupt table:
  9059. Offset    Size    Description    (Table 1794)
  9060.  00h    BYTE    1Ch
  9061.  01h    DWORD    FINDIRQ's INT 1C handler
  9062.  05h    DWORD    original INT 1C handler
  9063.  09h    BYTE    28h
  9064.  0Ah    DWORD    FINDIRQ's INT 28 handler
  9065.  0Eh    DWORD    original INT 28 handler
  9066.  12h    BYTE    2Fh
  9067.  13h    DWORD    FINDIRQ's INT 2F handler
  9068.  17h    DWORD    original INT 2F handler
  9069. --------d-2FF700-----------------------------
  9070. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  9071.     AX = F700h
  9072. Return: AL = state
  9073.         00h not installed
  9074.         FFh installed
  9075. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  9076. --------d-2FF701-----------------------------
  9077. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  9078.     AX = F701h
  9079.     BX:CX = 32-bit count of 55ms timer ticks
  9080. --------d-2FF800CX4455-----------------------
  9081. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  9082.     AX = F800h
  9083.     CX = 4455h ("DU")
  9084.     DL = 45h ("E")
  9085. Return: AL = FFh if installed
  9086.         ES:BX -> ASCII signature "Universal Data Exchange"
  9087. Program: SuperStor is a disk-compression program by Addstor.
  9088. Note:    returns AX=0001h if AL is not 00h or 01h
  9089. SeeAlso: AX=1001h,AX=F801h
  9090. --------d-2FF801CX4455-----------------------
  9091. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  9092.     AX = F801h
  9093.     CX = 4455h ("DU")
  9094.     DL = 45h ("E")
  9095.     ES:BX = return address if successful
  9096. Return: at specified address if successfully removed from memory
  9097.     else
  9098.         AL = error code
  9099.         ???
  9100. Program: SuperStor is a disk-compression program by Addstor.
  9101. Note:    returns AX=0001h if AL is not 00h or 01h
  9102. SeeAlso: AX=1001h,AX=F800h
  9103. --------*-2FFB-------------------------------
  9104. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  9105.     AH = FBh
  9106. SeeAlso: AX=FB42h/BX=0001h
  9107. --------f-2FFB-------------------------------
  9108. INT 2F U - Conner Backup Exec AUTORES - API
  9109.     AH = FBh
  9110.     BL = function number (00h-07h)
  9111.     ???
  9112. Return: ???
  9113. Program: AUTORES is a resident program launcher for unattended backups
  9114. --------a-2FFB00-----------------------------
  9115. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  9116.     AX = FB00h
  9117. Return: AX = 00FFh if installed
  9118. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  9119. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  9120. --------U-2FFB00-----------------------------
  9121. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  9122.     AX = FB00h
  9123. Return: AX = FFFFh if installed
  9124.         BX = version (BCD, BH=major, BL=minor)
  9125. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  9126. --------a-2FFB01-----------------------------
  9127. INT 2F U - AutoBraille v1.1A - ???
  9128.     AX = FB01h
  9129.     ???
  9130. Return: ???
  9131. --------U-2FFB01-----------------------------
  9132. INT 2F U - Jot-It! v1.50 - GET USER NAME
  9133.     AX = FB01h
  9134. Return: DX:BX -> ASCIZ user name
  9135. SeeAlso: AX=FB02h"Jot-It"
  9136. --------a-2FFB02-----------------------------
  9137. INT 2F U - AutoBraille v1.1A - ???
  9138.     AX = FB02h
  9139. Return: AH = ???
  9140.     AL = ???
  9141. --------U-2FFB02-----------------------------
  9142. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  9143.     AX = FB02h
  9144. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  9145. SeeAlso: AX=FB01h"Jot-It"
  9146. --------a-2FFB03-----------------------------
  9147. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  9148.     AX = FB03h
  9149. Return: AX = ???
  9150. --------U-2FFB03-----------------------------
  9151. INT 2F U - Jot-It! v1.50 - UNINSTALL
  9152.     AX = FB03h
  9153. Return: resident code removed from memory
  9154. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  9155.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  9156. SeeAlso: AX=FB00h"Jot-It"
  9157. --------a-2FFB-------------------------------
  9158. INT 2F U - AutoBraille v1.1A - SET ???
  9159.     AH = FBh
  9160.     AL = 04h-08h
  9161. Return: AX = 0000h
  9162. --------a-2FFB-------------------------------
  9163. INT 2F U - AutoBraille v1.1A - SET ???
  9164.     AH = FBh
  9165.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  9166. Return: ???
  9167. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  9168. --------a-2FFB-------------------------------
  9169. INT 2F U - AutoBraille v1.1A - SET ???
  9170.     AH = FBh
  9171.     AL = 10h-1Fh
  9172.     ???
  9173. Return: ???
  9174. --------a-2FFB20-----------------------------
  9175. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  9176.     AX = FB20h
  9177.     BL = flags to set
  9178. SeeAlso: AX=FB21h"AutoBraille"
  9179. --------a-2FFB21-----------------------------
  9180. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  9181.     AX = FB21h
  9182.     BL = flags to clear
  9183. SeeAlso: AX=FB20h"AutoBraille"
  9184. --------a-2FFB22-----------------------------
  9185. INT 2F U - AutoBraille v1.1A - SET ???
  9186.     AX = FB22h
  9187.     BL = ???
  9188. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  9189. --------a-2FFB28-----------------------------
  9190. INT 2F U - AutoBraille v1.1A - ???
  9191.     AX = FB28h
  9192.     BX = ???
  9193.     ???
  9194. Return: ???
  9195. SeeAlso: AX=FB29h"AutoBraille"
  9196. --------a-2FFB29-----------------------------
  9197. INT 2F U - AutoBraille v1.1A - ???
  9198.     AX = FB29h
  9199.     BX = ???
  9200.     ???
  9201. Return: ???
  9202. SeeAlso: AX=FB28h"AutoBraille"
  9203. --------a-2FFB-------------------------------
  9204. INT 2F U - AutoBraille v1.1A - SET ???
  9205.     AH = FBh
  9206.     AL = 2Bh-34h
  9207.     BX = ???
  9208. --------a-2FFB35-----------------------------
  9209. INT 2F U - AutoBraille v1.1A - SET ???
  9210.     AX = FB35h
  9211.     BL = ???
  9212. --------a-2FFB36-----------------------------
  9213. INT 2F U - AutoBraille v1.1A - SET ???
  9214.     AX = FB36h
  9215.     BL = ???
  9216. --------a-2FFB37-----------------------------
  9217. INT 2F U - AutoBraille v1.1A - SET ???
  9218.     AX = FB37h
  9219.     BL = ???
  9220. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  9221. --------E-2FFB42BX0001-----------------------
  9222. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  9223.     AX = FB42h
  9224.     BX = 0001h
  9225. Return: AX = version number??? (AL=major, AH=minor)
  9226.     CX = next-selector increment
  9227. ---BC2.0---
  9228.     ES:BX -> 80-byte buffer for ???
  9229.     DX = DPMI version
  9230. ---BC3.0---
  9231.     BX = ??? (0000h)
  9232.     DX = ???
  9233.     ES:SI -> list of valid selectors ???
  9234. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  9235.       as version 1.000, while the version distributed with BC++ 3.0
  9236.       identifies itself as version 1.0; the former is 10864 bytes, the
  9237.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  9238.       the BC3.0 version also adds a DPMI host and DOS extender
  9239.     the BC++ 2.0 version displays an error message if called with BX
  9240.       values other than 0001h-0008h
  9241. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  9242. --------E-2FFB42BX0002-----------------------
  9243. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  9244.     AX = FB42h
  9245.     BX = 0002h
  9246.     CX = size in bytes
  9247.     DX = bit flags
  9248.         bit 2: set to allocate DOS memory, clear for DPMI memory
  9249.     SI = selector of descriptor to be modified to access allocated memory
  9250.     DI = selector of a second descriptor to be modified
  9251. Return: AX = ??? or 0000h on error
  9252.     CX:DX = linear base address of DPMI memory block
  9253.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  9254.     ???
  9255. Note:    two segment descriptors may be set if a code and an aliased data
  9256.       segment are required; if only one descriptor is needed, SI should
  9257.       equal DI on entry
  9258. BUG:    when allocating DOS memory, the code computes the linear address by
  9259.       multiplying the segment number by 4 rather than shifting by 4
  9260. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  9261. --------E-2FFB42BX0002-----------------------
  9262. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  9263.     AX = FB42h
  9264.     BX = 0002h
  9265.     ES:SI -> memory block info (see #1795)
  9266. Return: ???
  9267. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  9268.       as version 1.000, while the version distributed with BC++ 3.0
  9269.       identifies itself as version 1.0; the former is 10864 bytes, the
  9270.       latter 22180 bytes.
  9271. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  9272.  
  9273. Format of DPMILOAD memory block info:
  9274. Offset    Size    Description    (Table 1795)
  9275.  00h    WORD    flags (see #1796)
  9276.  02h    DWORD    block size in bytes
  9277. ---DPMI memory block---
  9278.  06h    DWORD    DPMI memory block handle
  9279. ---DOS memory block---
  9280.  06h    WORD    real-mode segment of memory block
  9281.  08h    WORD    selector of memory block
  9282. ---
  9283.  0Ah    DWORD    linear address of memory
  9284.  0Eh    WORD    memory operation error code
  9285.         0008h no more free LDT descriptors
  9286. ---if flags bit 0 clear---
  9287.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  9288.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  9289. ---if flags bit 0 set---
  9290.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  9291.  12h    WORD    unused???
  9292.  
  9293. Bitfields for DPMILOAD memory block flags:
  9294. Bit(s)    Description    (Table 1796)
  9295.  0    set if data segment rather than code segment
  9296.  1    information valid
  9297.  2    set if DOS memory block rather than DPMI memory block
  9298.  4    ???
  9299.  15    set if no LDT selectors for memory block???
  9300. SeeAlso: #1795
  9301. --------E-2FFB42BX0003-----------------------
  9302. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  9303.     AX = FB42h
  9304.     BX = 0003h
  9305. Return: DX:AX = size of largest free block in paragraphs
  9306.         0000h:0000h on error (BC3.0 version only)
  9307. Note:    AX and DX are destroyed on error, but no other error indicator is
  9308.       returned, under the BC++ 2.0 version of DPMILOAD
  9309. SeeAlso: AX=FB42h/BX=0002h
  9310. --------E-2FFB42BX0004-----------------------
  9311. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  9312.     AX = FB42h
  9313.     BX = 0004h
  9314.     DS:DX -> ASCIZ filename of protected-mode executable
  9315. Return: CX = selector of ??? or 0000h
  9316. ---BC3.0---
  9317.     DX = status (0000h,FFF4h,others???) (see #1797)
  9318. Note:    the filename may also be terminated by a CR rather than a NUL under the
  9319.       BC++ 3.0 version of DPMILOAD
  9320.  
  9321. (Table 1797)
  9322. Values for DPMILOAD function status:
  9323.  0000h    successful
  9324.  0001h    ??? failure
  9325.  0002h    invalid selector
  9326.  0004h    unknown error
  9327.  0008h    no more LDT descriptors available???
  9328.  FFDEh    unable to set descriptor
  9329.  FFDFh    unable to get segment base address
  9330.  FFE0h    ???
  9331.  FFF2h    invalid parameter value
  9332.  FFF4h    component of filename too long (name not in 8.3 format)
  9333.  FFF5h    pathname too long (>79 chars)
  9334.  FFF6h    ???
  9335.  FFF8h    ???
  9336.  FFF9h    index out of range
  9337.  FFFAh    ???
  9338.  FFFCh    invalid access to code segment???
  9339.  FFFEh    ???
  9340.  FFFFh    general error
  9341. --------E-2FFB42BX0005-----------------------
  9342. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  9343.     AX = FB42h
  9344.     BX = 0005h
  9345.     CX = selector of DPMILOAD data (see #1798)
  9346.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  9347. Return: DX = status (see #1797)
  9348.         0000h successful
  9349.         AX:BX -> ??? FAR function (called with two words on top of stk)
  9350.         else
  9351.         BX destroyed
  9352. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  9353.  
  9354. Format of DPMILOAD data:
  9355. Offset    Size    Description    (Table 1798)
  9356.  00h 12 BYTEs    ???
  9357.  0Ch    WORD    ??? bit flags
  9358.  0Eh 14 BYTEs    ???
  9359.  1Ch    WORD    number of memory control records (see #1801)
  9360.  1Eh 25 BYTEs    ???
  9361.  37h    BYTE    ??? bit flags
  9362.         bit 4: data valid???
  9363.  38h  4 BYTEs    ???
  9364.  3Ch    WORD    ???
  9365.  3Eh 12 BYTEs    ???
  9366.  46h    BYTE    ??? counter
  9367.  47h    BYTE    ???
  9368.  48h    BYTE    ???
  9369.  49h    BYTE    ???
  9370.  4Ah    WORD    ???
  9371.  4Ch  2 BYTEs    ???
  9372.  4Eh    WORD    offset of array of 64-byte memory control records
  9373.  52h    WORD    offset of name list (see #1799)
  9374.  54h  4 BYTEs    ???
  9375.  58h    WORD    offset of array of 6-byte objects (see #1800)
  9376.  5Ah  8 BYTEs    ???
  9377.  62h  9 BYTEs    ASCIZ name for ???
  9378.  6Bh  9 BYTEs    ASCIZ name for ???
  9379.     ???
  9380.  
  9381. Format of name list entry [array]:
  9382. Offset    Size    Description    (Table 1799)
  9383.  00h    BYTE    length of name (00h if end of array)
  9384.  01h  N BYTEs    name
  9385.  N+1    WORD    1-based index into array of unknown 6-byte objects
  9386.  
  9387. Format of 6-byte objects:
  9388. Offset    Size    Description    (Table 1800)
  9389.  00h    BYTE    ???
  9390.  01h    BYTE    ???
  9391.  02h    BYTE    ???
  9392.  03h    BYTE    1-based index of memory control record
  9393.  04h    WORD    ???
  9394.  
  9395. Format of memory control record:
  9396. Offset    Size    Description    (Table 1801)
  9397.  00h 20 BYTEs    memory block info (see #1795)
  9398.  14h  6 BYTEs    ???
  9399.  1Ah    BYTE    ???
  9400.  1Bh  2 BYTEs    ???
  9401.  1Dh    BYTE    ??? bit flags
  9402.  1Eh 14 BYTEs    ???
  9403.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  9404.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  9405.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  9406.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  9407.  3Ch  4 BYTEs    ???
  9408. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  9409.       the pointers at offsets 34h and 38h
  9410. --------E-2FFB42BX0006-----------------------
  9411. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  9412.     AX = FB42h
  9413.     BX = 0006h
  9414.     CX = selector of DPMILOAD data (see #1798)
  9415.     DX = 1-based index into array of ??? 6-byte objects
  9416. Return: DX = status (see #1797)
  9417.         0000h successful
  9418.         AX:BX -> ??? FAR function (called with two words on top of stk)
  9419.         else
  9420.         BX destroyed
  9421. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  9422. --------E-2FFB42BX0007-----------------------
  9423. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  9424.     AX = FB42h
  9425.     BX = 0007h
  9426.     CX = selector of ???
  9427. Return: ???
  9428. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  9429.       as version 1.000, while the version distributed with BC++ 3.0
  9430.       identifies itself as version 1.0; the former is 10864 bytes, the
  9431.       latter 22180 bytes.
  9432. --------E-2FFB42BX0007-----------------------
  9433. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9434.     AX = FB42h
  9435.     BX = 0007h
  9436.     CX = selector of DPMILOAD data (see #1798)
  9437.     ???
  9438. Return: DX = status (see #1797)
  9439.         0000h successful
  9440.         AX = ???
  9441. --------E-2FFB42BX0008-----------------------
  9442. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  9443.     AX = FB42h
  9444.     BX = 0008h
  9445.     CX = bit flags
  9446.         bit 2: set if DPMI memory, clear if DOS memory
  9447.     DX = selector of DOS memory block
  9448.     SI:DI = handle of DPMI memory block
  9449. Return: DX = 0000h on error, unchanged if succcessful
  9450. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  9451.       as version 1.000, while the version distributed with BC++ 3.0
  9452.       identifies itself as version 1.0; the former is 10864 bytes, the
  9453.       latter 22180 bytes.
  9454. SeeAlso: AX=FB42h/BX=0002h
  9455. --------E-2FFB42BX0008-----------------------
  9456. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  9457.     AX = FB42h
  9458.     BX = 0008h
  9459.     ES:SI -> memory block info (see #1795)
  9460. Return: ???
  9461. SeeAlso: AX=FB42h/BX=0009h
  9462. --------E-2FFB42BX0009-----------------------
  9463. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  9464.     AX = FB42h
  9465.     BX = 0009h
  9466.     ES:SI -> memory block info (see #1795)
  9467.     ???
  9468. Return: ???
  9469. SeeAlso: AX=FB42h/BX=0008h"3.0"
  9470. --------E-2FFB42BX000A-----------------------
  9471. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  9472.     AX = FB42h
  9473.     BX = 000Ah
  9474.     CX = 0001h
  9475.     DX = ???
  9476.     SI = ???
  9477. Return: after user exits subshell
  9478. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  9479.       function is not available in protected mode.
  9480.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  9481.       version also adds a DPMI host and DOS extender.
  9482. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  9483. --------E-2FFB42BX000B-----------------------
  9484. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  9485.     AX = FB42h
  9486.     BX = 000Bh
  9487. --------E-2FFB42BX000C-----------------------
  9488. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  9489.     AX = FB42h
  9490.     BX = 000Ch
  9491.     ES:SI -> memory block info ??? (see #1795)
  9492. Return: DX = status???
  9493. SeeAlso: AX=FB42h/BX=000Fh
  9494. --------E-2FFB42BX000D-----------------------
  9495. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  9496.     AX = FB42h
  9497.     BX = 000Dh
  9498.     CX = number of words to copy from protected-mode to real mode stack
  9499.     DL = interrupt number
  9500.     DH = flags
  9501.         bit 0: reset the interrupt controller and A20 line
  9502.     ES:DI -> real-mode call structure (see #1815 at INT 31/AX=0300h)
  9503. Return: CX = status
  9504.         0000h successful
  9505.         0001h failed
  9506. SeeAlso: INT 31/AX=0300h
  9507. --------E-2FFB42BX000E-----------------------
  9508. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  9509.     AX = FB42h
  9510.     BX = 000Eh
  9511.     DS:DX -> ASCIZ or CR-terminated name of ???
  9512. Return: CX = selector of DPMILOAD data (see #1798) corresponding to name,
  9513.           0000h on error
  9514. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  9515. --------E-2FFB42BX000F-----------------------
  9516. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  9517.     AX = FB42h
  9518.     BX = 000Fh
  9519.     ES:SI -> memory block info (see #1795)
  9520. Return: ???
  9521. SeeAlso: AX=FB42h/BX=000Ch
  9522. --------E-2FFB42BX0010-----------------------
  9523. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  9524.     AX = FB42h
  9525.     BX = 0010h
  9526.     DX = segment number
  9527. Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
  9528.         0000h successful
  9529.         DX = selector number for descriptor
  9530.         0008h failed
  9531. SeeAlso: AX=FB42h/BX=0023h
  9532. --------E-2FFB42BX0011-----------------------
  9533. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9534.     AX = FB42h
  9535.     BX = 0011h
  9536.     CX = selector of DPMILOAD data (see #1798)
  9537.     ???
  9538. Return: DX = status (0000h,0002h,FFFEh) (see also #1797)
  9539.         0000h successful
  9540.         AX:BX -> ??? name
  9541.         FFFEh ??? error
  9542. --------E-2FFB42BX0012-----------------------
  9543. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9544.     AX = FB42h
  9545.     BX = 0012h
  9546.     CX = selector for ???
  9547. Return: CX = selector for ???
  9548. --------E-2FFB42BX0013-----------------------
  9549. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9550.     AX = FB42h
  9551.     BX = 0013h
  9552.     CX = selector of DPMILOAD data (see #1798)
  9553.     DX = 1-based index of ???
  9554. Return: CX = status (0000h,0002h,FFF9h) (see also #1797)
  9555.         0000h successful
  9556.         BX = ??? or 0000h
  9557.         FFF9h ??? error
  9558. --------E-2FFB42BX0014-----------------------
  9559. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  9560.     AX = FB42h
  9561.     BX = 0014h
  9562.     CX = 0001h
  9563. Return: BX = 0000h if installed
  9564. Note:    unlike most of the DPMILOAD functions, this call is available only in
  9565.       real or V86 mode
  9566. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  9567. --------E-2FFB42BX0015-----------------------
  9568. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  9569.     AX = FB42h
  9570.     BX = 0015h
  9571.     CX = 0001h
  9572. Return: ???
  9573. Note:    unlike most of the DPMILOAD functions, this call is available only in
  9574.       real or V86 mode
  9575. SeeAlso: AX=FB42h/BX=000Ah
  9576. --------E-2FFB42BX0016-----------------------
  9577. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  9578.     AX = FB42h
  9579.     BX = 0016h
  9580.     CX = selector of DPMILOAD data (see #1798)
  9581. Return: DX = status (see also AX=FB42h/BX=0004h)
  9582.         0000h successful
  9583.         CX = ???
  9584. --------E-2FFB42BX0017-----------------------
  9585. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9586.     AX = FB42h
  9587.     BX = 0017h
  9588.     CX = ???
  9589.     DX = ???
  9590.     ???
  9591. Return: DX = status (0000h,0001h) (see #1797)
  9592. --------E-2FFB42BX0018-----------------------
  9593. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  9594.     AX = FB42h
  9595.     BX = 0018h
  9596.     CX = ???
  9597. --------E-2FFB42BX0019-----------------------
  9598. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9599.     AX = FB42h
  9600.     BX = 0019h
  9601.     CX = selector for ???
  9602.     ???
  9603. Return: DX = status (see also AX=FB42h/BX=0004h)
  9604.         0000h successful
  9605.         CX = selector for ???
  9606. --------E-2FFB42BX001A-----------------------
  9607. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9608.     AX = FB42h
  9609.     BX = 001Ah
  9610.     CX = selector for ???
  9611.     ???
  9612. Return: DX = status (see also AX=FB42h/BX=0004h)
  9613.         0000h successful
  9614.         0004h failed
  9615.     CX:BX -> ???
  9616. --------E-2FFB42BX001B-----------------------
  9617. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9618.     AX = FB42h
  9619.     BX = 001Bh
  9620.     CX = selector of DPMILOAD data (see #1798)
  9621.     DX = offset of ???
  9622. Return: DX = status (0000h,0002h) (see also #1797)
  9623.         0000h successful
  9624.         BX = selector for ???
  9625.         CX = selector for ???
  9626. --------E-2FFB42BX001C-----------------------
  9627. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9628.     AX = FB42h
  9629.     BX = 001Ch
  9630.     ES = selector for DPMILOAD data (see #1798)
  9631.     CX = 1-based index of ???
  9632.     DX = 1-based index of ???
  9633. Return: DX = status (0000h,0002h,FFF9h) (see #1797)
  9634. --------E-2FFB42BX001D-----------------------
  9635. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  9636.     AX = FB42h
  9637.     BX = 001Dh
  9638. Return: CX:DX = ???
  9639. --------E-2FFB42BX001E-----------------------
  9640. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9641.     AX = FB42h
  9642.     BX = 001Eh
  9643.     CX = ???
  9644.     ???
  9645. Return: DX = status (see also AX=FB42h/BX=0004h)
  9646.         0000h successful
  9647.         FFF7h ??? error
  9648.     CX:BX -> ???
  9649. --------E-2FFB42BX001F-----------------------
  9650. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  9651.     AX = FB42h
  9652.     BX = 001Fh
  9653.     DS:DX -> 8-character name of ???
  9654.     ???
  9655. Return: CX = selector of DPMILOAD data (see #1798) for ???
  9656.         0000h on error
  9657. SeeAlso: AX=FB42h/BX=000Eh
  9658. --------E-2FFB42BX0020-----------------------
  9659. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  9660.     AX = FB42h
  9661.     BX = 0020h
  9662. Return: DX = ??? (always 0000h)
  9663. --------E-2FFB42BX0021-----------------------
  9664. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  9665.     AX = FB42h
  9666.     BX = 0021h
  9667.     CL = exception number (00h-1Fh)
  9668. Return: DX = status (see also AX=FB42h/BX=0004h)
  9669.         0000h successful
  9670.         AX:BX = selector:offset of handler
  9671.         FFF2h unable to get exception handler vector
  9672. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  9673. --------E-2FFB42BX0022-----------------------
  9674. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  9675.     AX = FB42h
  9676.     BX = 0022h
  9677.     CL = exception number (00h-1Fh)
  9678.     SI:DX = selector:offset of new handler
  9679. Return: DX = status (0000h,0004h,FFF2h) (see #1797)
  9680. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  9681. --------E-2FFB42BX0023-----------------------
  9682. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  9683.     AX = FB42h
  9684.     BX = 0023h
  9685.     CX = selector
  9686. Return: DX = status (see also AX=FB42h/BX=0004h)
  9687.         0000h successful
  9688.         CX = real-mode segment number
  9689.         FFF2h descriptor has invalid base address for real-mode segment
  9690. SeeAlso: AX=FB42h/BX=0010h
  9691. --------E-2FFB42BX0024-----------------------
  9692. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  9693.     AX = FB42h
  9694.     BX = 0024h
  9695.     CL = interrupt number
  9696. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  9697.     AX:BX = selector:offset of handler
  9698. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  9699. --------E-2FFB42BX0025-----------------------
  9700. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  9701.     AX = FB42h
  9702.     BX = 0025h
  9703.     CL = interrupt number
  9704.     SI:DX = selector:offset of new handler
  9705. Return: DX = status (0000h,0004h,FFF2h) (see #1797)
  9706. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  9707. --------E-2FFB42BX0026-----------------------
  9708. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  9709.     AX = FB42h
  9710.     BX = 0026h
  9711.     CX = selector of DPMILOAD data (see #1798)
  9712.     DX = 1-based index of ???
  9713.     ???
  9714. Return: DX = status (0000h,0002h,FFF9h) (see #1797)
  9715.         0000h successful
  9716.         BX = offset of ??? within data structure
  9717. --------E-2FFB42BX0027-----------------------
  9718. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  9719.     AX = FB42h
  9720.     BX = 0027h
  9721.     CX = selector of DPMILOAD data (see #1798)
  9722.     DX = offset of ???
  9723. Return: DX = status (see also AX=FB42h/BX=0004h)
  9724.         0000h successful
  9725.         BX = ???
  9726. --------E-2FFB42BX0080-----------------------
  9727. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  9728.     AX = FB42h
  9729.     BX = 0080h
  9730.     ???
  9731. Return: AX = ???
  9732.     ???
  9733. --------E-2FFB42BX0081-----------------------
  9734. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  9735.     AX = FB42h
  9736.     BX = 0081h
  9737.     ???
  9738. Return: AX = ???
  9739.     ???
  9740. --------E-2FFB42BX1001-----------------------
  9741. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  9742.     AX = FB42h
  9743.     BX = 1001h
  9744. Return: BX = 0000h
  9745. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  9746. --------E-2FFB42BX1002-----------------------
  9747. INT 2F U - Borland RTM.EXE 1.0 - ???
  9748.     AX = FB42h
  9749.     BX = 1002h
  9750.     ???
  9751. Return: ???
  9752. SeeAlso: AX=FB42h/BX=1001h
  9753. --------E-2FFB42BX1003-----------------------
  9754. INT 2F U - Borland RTM.EXE 1.0 - ???
  9755.     AX = FB42h
  9756.     BX = 1003h
  9757.     ???
  9758. Return: ???
  9759. SeeAlso: AX=FB42h/BX=1001h
  9760. --------E-2FFB43-----------------------------
  9761. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  9762.     AX = FB43h
  9763.     BX = subfunction (at least 0000h-000Eh)
  9764. Notes:    this function is only present in protected mode; it does nothing but
  9765.       an immediate IRET
  9766.     DPMILOAD.EXE itself calls various subfunctions:
  9767.         subfunction 0004h is called with CX=selector of ???, DI=selector
  9768.           of DPMILOAD data
  9769.         subfunction 0008h is called with CX=selector of DPMILOAD data
  9770. SeeAlso: AX=FB42h/BX=0001h
  9771. --------G-2FFB43BX0100-----------------------
  9772. INT 2F PU - Borland TDX - INSTALLATION CHECK
  9773.     AX = FB43h
  9774.     BX = 0100h
  9775. Return: BX = FB43h if loaded
  9776. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  9777. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  9778.       should install their own stack and general protection exception
  9779.       handlers, or allow TDX to handle those exceptions
  9780. --------a-2FFB64-----------------------------
  9781. INT 2F U - AutoBraille v1.1A - GET ???
  9782.     AX = FB64h
  9783. Return: AX = ??? (0006h seen)
  9784. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  9785. --------E-2FFBA1BX0081-----------------------
  9786. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  9787.     AX = FBA1h
  9788.     BX = 0081h
  9789.     ES:DI -> 16-byte buffer
  9790. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  9791. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  9792. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  9793.       extender was moved into DPMILOAD.
  9794. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  9795. SeeAlso: INT 21/AX=4403h"TKERNEL"
  9796. --------E-2FFBA1BX0082-----------------------
  9797. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  9798.     AX = FBA1h
  9799.     BX = 0082h
  9800.     ES:DI -> response buffer (see #1802)
  9801. Return: ES:DI buffer filled
  9802. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  9803.  
  9804. Format of TKERNEL response buffer:
  9805. Offset    Size    Description    (Table 1802)
  9806.  00h  4 BYTEs    signature "IABH"
  9807.  04h    DWORD    pointer to FAR extender entry point (see #1803)
  9808.  
  9809. (Table 1803)
  9810. Call TKERNEL entry point with:
  9811.     AX = function number
  9812.         0000h initialize???
  9813.         STACK:    WORD  ???
  9814.         Return: AX = status???
  9815.             STACK unchanged
  9816.         0001h get version???
  9817.         Return: AX = 0200h for v2.0.34
  9818.         0002h get ???
  9819.         Return: AX = ??? (011Eh or 0182h seen)
  9820.         0003h load protected-mode executable
  9821.         STACK:    DWORD -> ASCIZ filename of executable
  9822.             DWORD    ???
  9823.             DWORD -> program arguments (counted string plus CR)
  9824.             DWORD -> environment for protected-mode executable
  9825.                 (terminated with two consecutive NULs)
  9826.             DWORD -> WORD buffer for ???
  9827.         Return: AX = status???
  9828.             STACK unchanged
  9829.         0004h get descriptor
  9830.         STACK:    WORD    selector for which to get descriptor
  9831.             WORD    segment number (when running in real mode)
  9832.             DWORD -> buffer for descriptor
  9833.         Return: CF clear if successful
  9834.                 buffer filled
  9835.             CF set on error
  9836.                 AX destroyed???
  9837.             STACK unchanged
  9838.         0005h ???
  9839.         STACK:    WORD    selector for ???
  9840.             WORD    subfunction number???
  9841.                 0000h run previously-loaded program???
  9842.                 0001h ??? (similar to 0000h)
  9843.                 0002h
  9844.                 0003h
  9845.                 0005h ??? (similar to 0000h and 0001h)
  9846.         Return: AX = status???
  9847.             STACK unchanged
  9848.         0006h ???
  9849.         STACK:    WORD ???
  9850.             DWORD -> WORD (call) max iterations of ???
  9851.                       (ret) remaining iterations
  9852.         Return: AX = ???
  9853.             STACK unchanged
  9854.         0007h unused
  9855.         Return: AX = 0001h
  9856.         0008h unused
  9857.         Return: AX = 0001h
  9858.         0009h copy protected-mode memory into conventional memory
  9859.         STACK:    WORD    selector for source segment
  9860.             WORD    segment of source if in real mode???
  9861.             DWORD    offset of source
  9862.             WORD    number of bytes to copy
  9863.             DWORD -> low-memory destination
  9864.         Return: AX = status
  9865.             STACK unchanged
  9866.         000Ah copy conventional memory into protected-mode memory
  9867.         STACK:    WORD    selector for destination segment
  9868.             WORD    segment of destination if in real mode???
  9869.             DWORD    offset of destination
  9870.             WORD    number of bytes to copy
  9871.             DWORD -> low-memory source
  9872.         Return: AX = status
  9873.             STACK unchanged
  9874.         000Bh get ??? pointers
  9875.         STACK:    WORD desired pointer
  9876.                 0000h get ???
  9877.                 0002h get protected-mode CR3
  9878.                 0003h get 4K page table buffer pointer
  9879.                 else Return: DX:AX = FFFFh:FFFFh
  9880.         Return: DX:AX = requested pointer
  9881.             STACK unchanged
  9882.         000Ch set ??? pointers
  9883.         STACK:    WORD desired pointer
  9884.                 0000h set ???
  9885.                 0002h set protected-mode CR3
  9886.                 0003h set 4K page table buffer pointer
  9887.                 else ignore
  9888.             DWORD new value for pointer
  9889.         Return: STACK unchanged
  9890.         000Dh get ??? pointers
  9891.         STACK:    WORD desired pointer
  9892.                 0000h get ???
  9893.                 0001h get ???
  9894.                 0002h get ???
  9895.                 0003h get ???
  9896.                 0004h get ???
  9897.                 0005h get ???
  9898.                 0006h get ???
  9899.                 0007h get ???
  9900.                 else Return: DX:AX = FFFFh:FFFFh
  9901.         Return: DX:AX = desired pointer
  9902.             STACK unchanged
  9903.         000Eh set ??? pointer
  9904.         STACK:    WORD desired pointer
  9905.                 0000h set ???
  9906.                 0001h set ???
  9907.                 0002h set ???
  9908.                 0003h set ???
  9909.                 0004h set ???
  9910.                 0005h set ???
  9911.                 0006h set ???
  9912.                 0007h set ???
  9913.                 else Return: DX:AX = FFFFh:FFFFh
  9914.         Return: STACK unchanged
  9915.         000Fh get ???
  9916.         Return: AX = ??? (seen 0008h)
  9917.         0010h get ???
  9918.         Return: AX = ???
  9919.         0011h determine whether selector is valid
  9920.         STACK:    WORD    possible selector
  9921.         Return: AX = selector or 0000h if invalid
  9922.             STACK unchanged
  9923.         0012h get physical address
  9924.         STACK:    WORD    selector for desired segment
  9925.             WORD    segment number if in real mode
  9926.             DWORD    offset within segment
  9927.         Return: DX:AX = 32-bit physical address or 00000000h on error
  9928.             BX destroyed
  9929.             STACK unchanged
  9930.         0013h ???
  9931.         Note:    normally jumps to code for function 0012h
  9932.         0014h copy protected-mode memory to conventional memory, with ???
  9933.         STACK:    WORD    selector for source segment
  9934.             WORD    segment of source if in real mode???
  9935.             DWORD    offset of source
  9936.             WORD    number of bytes to copy
  9937.             DWORD -> low-memory destination
  9938.         Return: AX = status???
  9939.             STACK unchanged
  9940.         0015h copy conventional memory to protected-mode memory, with ???
  9941.         STACK:    WORD    selector for destination segment
  9942.             WORD    segment of destination if in real mode???
  9943.             DWORD    offset of destination
  9944.             WORD    number of bytes to copy
  9945.             DWORD -> low-memory source
  9946.         Return: AX = status???
  9947.             STACK unchanged
  9948.         0016h set ??? pointer
  9949.         STACK:    WORD    unused
  9950.             DWORD -> ??? or 0000h:0000h
  9951.         Return: AX = 0000h
  9952.             STACK unchanged
  9953.         0017h allocate real-mode procedure???
  9954.         STACK:    DWORD    ASCIZ name of procedure
  9955.             DWORD ???
  9956.             DWORD    address of subroutine to invoke
  9957.         Return: AX = status
  9958.                 0032h procedure by that name exists
  9959.                 0033h no more real-mode procedures available
  9960.             DX destroyed
  9961.             STACK unchanged
  9962.         0018h unused
  9963.         Return: AX = 0001h
  9964.         0019h get parameter block
  9965.         Return: DX:AX -> parameter block (format unknown at this time,
  9966.                   but 92h bytes)
  9967.                   (preceded by signature "!!PARAM-BLOCK!!")
  9968.         001Ah get ???
  9969.         Return: AX = ??? (0148h seen)
  9970.         001Bh free real-mode procedure???
  9971.         STACK:    DWORD -> ASCIZ name of procedure
  9972.         Return: ???
  9973.             STACK unchanged
  9974.         001Ch check whether packets from protected mode task pending
  9975.         Return: AX = 0001h if packets pending, 0000h if not
  9976.         001Dh set ???
  9977.         STACK:    DWORD ??? or 0000h:0000h
  9978.         Return: AX,BX destroyed
  9979.             STACK unchanged
  9980.         001Eh ???
  9981.         STACK:    WORD ??? (high byte ignored)
  9982.             DWORD -> data structure (see below)
  9983.         Return: AX,BX,CX,DX destroyed
  9984.             data structure updated
  9985.             STACK unchanged
  9986.         Format of data structure:
  9987.         Offset    Size    Description
  9988.          00h  2 BYTEs    unused
  9989.          02h    WORD    ???
  9990.          04h    WORD    ???
  9991.          06h    WORD    ???
  9992.          08h  2 BYTEs    unused
  9993.          0Ah    WORD    ???
  9994.          0Ch    WORD    (call) ???
  9995.                 (ret) offset of this data structure (BUG?)
  9996.         001Fh set ???
  9997.         STACK:    WORD ??? (set to 0001h if zero)
  9998.         Return: AX destroyed
  9999.             STACK unchanged
  10000.         0020h ???
  10001.         STACK:    DWORD -> ??? (8 bytes of data)
  10002.         Return: AX = ???
  10003.             STACK unchanged
  10004.         0021h ???
  10005.         STACK:    DWORD -> ??? (8 bytes of data)
  10006.             WORD    ???
  10007.             WORD    ???
  10008.         Return: AX = ???
  10009.             STACK unchanged
  10010.         0022h ???
  10011.         STACK:    DWORD -> ??? (8 bytes of data)
  10012.             DWORD -> 4-byte buffer for results
  10013.         Return: AX = ???
  10014.             STACK unchanged
  10015.         0023h ???
  10016.         STACK:    DWORD -> ??? (8 bytes of data)
  10017.         Return: AX = ???
  10018.             STACK unchanged
  10019.         0024h set ???
  10020.         STACK:    WORD ???
  10021.         Return: AX destroyed
  10022.             STACK unchanged
  10023.         0025h get ???
  10024.         Return: AX = ??? (value set with func 0024h)
  10025.         0026h BUG: jumps to hyperspace due to fencepost error
  10026.         FFFFh set DOS memory management functions
  10027.         BX:SI -> FAR routine for allocating DOS memory
  10028.               (called with AH=48h,BX=number of paragraphs to alloc;
  10029.               returns CF clear, AX=segment of allocated memory, or
  10030.                   CF set on error)
  10031.         CX:DI -> FAR routine for freeing DOS memory
  10032.               (called with AH=49h,ES=segment of block to free;
  10033.               returns CF set on error, AX=error code)
  10034.         Note: each of these pointers normally points at INT 21/RETF
  10035.         other Return: AX = 0001h
  10036. Note:    BX may be destroyed by any of the API calls
  10037. --------E-2FFBA1BX0084-----------------------
  10038. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  10039.     AX = FBA1h
  10040.     BX = 0084h
  10041.     ES:DI -> response buffer (see #1804)
  10042. Return: ES:DI buffer filled
  10043. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  10044.  
  10045. Format of TKERNEL response buffer:
  10046. Offset    Size    Description    (Table 1804)
  10047.  00h  4 BYTEs    signature "IABH"
  10048.  04h    WORD    success indicator
  10049.         0001h failed (INT 2F hooked by another program)
  10050.         unchanged if successful
  10051.  06h    WORD    segment of ???
  10052.  08h    WORD    segment of ??? memory block to free if nonzero
  10053.  0Ah    WORD    segment of ??? memory block to free if nonzero
  10054. --------s-2FFBFBES0000-----------------------
  10055. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  10056.     AX = FBFBh
  10057.     ES = 0000h
  10058. Return: ES nonzero if installed
  10059.         ES:BX -> entry point data structure (see #1805)
  10060. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  10061.  
  10062. Format of SoundBlaster entry point data structure:
  10063. Offset    Size    Description    (Table 1805)
  10064.  00h  3 BYTEs    signature "FB "
  10065.  03h    BYTE    driver major version number???
  10066.  04h    DWORD    speech driver entry point (see #1806)
  10067.  08h 24 BYTEs    ???
  10068.  20h  ? BYTEs    data buffer for calling speech driver
  10069.  
  10070. (Table 1806)
  10071. Call SoundBlaster speech driver entry point with:
  10072.     AL = function
  10073.         07h speak a string
  10074.         data buffer (see #1805) contains:
  10075.             BYTE  length of string
  10076.               N BYTEs string to speak
  10077. --------!---Section--------------------------
  10078.